调用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,因此操作失败。
谢谢!
答案 0 :(得分:5)
在你的surfaceCreated上,你编码设置了camara的图片大小,如下面的代码所示:
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();
}
}