下面的代码作为调用TakePicture后的jpeg图片回调执行。如果我将数据保存到磁盘,它是一个 1280x960 的 jpeg。我尝试更改图片尺寸,但由于不支持更小的尺寸,所以这是不可能的。 JPEG 是唯一可用的图片格式。
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream out = null;
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap sbm = Bitmap.createScaledBitmap(bm, 640, 480, false);
data.Length 是预期的 500k。执行 BitmapFactory.decodeByteArray() 后,bm 的高度和宽度为 -1,因此看起来操作失败。
- 我不清楚 Bitmap 是否可以处理 jpeg 数据。我不这么认为,但我似乎有一些代码示例似乎表明它是。
- 在解码和缩放之前数据是否需要为位图格式?
- 如果可以,该怎么做?
谢谢!
最佳答案
在您的 surfaceCreated 上,您通过代码设置相机的图片大小,如下面的代码所示:
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(holder);
Camera.Parameters p = camera.getParameters();
p.set("jpeg-quality", 70);
p.setPictureFormat(PixelFormat.JPEG);
p.setPictureSize(640, 480);
camera.setParameters(p);
} catch (IOException e) {
e.printStackTrace();
}
}
关于android - 在保存到 SD 之前缩放相机图片大小的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3962030/