Android 保存到SD之前缩放相机图片大小的最佳方法
调用TakePicture后,以下代码作为jpeg图片回调执行。如果我将数据保存到磁盘,它是1280x960 jpeg。我已尝试更改图片大小,但这是不可能的,因为不支持更小的大小。JPEG是唯一可用的图片格式Android 保存到SD之前缩放相机图片大小的最佳方法,android,bitmap,jpeg,Android,Bitmap,Jpeg,调用TakePicture后,以下代码作为jpeg图片回调执行。如果我将数据保存到磁盘,它是1280x960 jpeg。我已尝试更改图片大小,但这是不可能的,因为不支持更小的大小。JPEG是唯一可用的图片格式 PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { FileOutputStream out = null
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);
数据。长度大约是预期的500k。执行BitmapFactory.decodeByteArray()后,bm的高度和宽度为-1,因此操作似乎失败
- 我不清楚位图是否能处理jpeg数据。我不这么认为,但我有一些代码示例似乎表明了这一点
- 在解码和缩放之前,数据是否需要为位图格式
- 如果是,如何做到这一点
谢谢 在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();
}
}
在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();
}
}