【发布时间】:2014-09-30 14:15:56
【问题描述】:
我正在开发自拍照片应用程序。 一切都很好,但最终保存的图像质量很差。 原始图片大小约为 3MB,压缩后的图片大小约为 500kb。 我使用bmp压缩的原因是图片的旋转。 我找不到其他解决方案来正确旋转。
有人知道如何通过工作轮换获得更好的质量?
这是我的代码:
camera = Camera.open();
camera.setDisplayOrientation(orient);
Camera.Parameters params = camera.getParameters();
params.setJpegQuality(100);
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
camera.setParameters(params);
camera.takePicture(null,null, myPictureCallback_RAW);
回调:
public void onPictureTaken(byte[] rawData, Camera arg1) {
Matrix m = new Matrix();
if(rotation == 3){
m.postRotate(180);
}else if(rotation == 1){
m.postRotate(0);
}else{
m.postRotate(90);
}
Bitmap bitmap = BitmapFactory.decodeByteArray(rawData, 0, rawData.length);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, imageFileOS);
imageFileOS.close();
Toast.makeText(CameraSnapshotActivity.this,
"Image saved: " + uriTarget.toString(),
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
finish();
}
【问题讨论】:
-
Bitmap.CompressFormat.JPEG 将其更改为 Bitmap.CompressFormat.PNG 可能会有所帮助
-
@IllegalArgument ,不幸的是结果相同 :(
-
可以显示旋转前后的图像吗?您是否在输出上运行了某种 JPEG 转储程序来查看量化值?
标签: android android-camera jpeg bmp