我在那里看过很多帖子?但我找不到正确答案.
我尝试做一些事情:
@Override
public void onPictureTaken(byte[] paramArrayOfByte,Camera paramCamera) {
try {
Bitmap bitmap = BitmapFactory.decodeByteArray(paramArrayOfByte,paramArrayOfByte.length);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
FileOutputStream os = new ileOutputStream(Singleton.mPushFilePath);
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap,width,height,matrix,false);
resizedBitmap.compress(Bitmap.CompressFormat.JPEG,95,os);
os.close();
...
最佳答案
也许您可以根据需要使用Camera.setDisplayOrientation拍摄已旋转的照片?检查Android camera rotate.此外,调查Camera.Parameters.setRotation().其中一种技术应该适合你.
否则你的代码看起来很好,除了在Bitmap.compress上使用参数95,你需要使用100进行无损压缩.
为避免内存不足异常,请使用Camera.Parameters.setPictureSize()获取较低分辨率的图片(例如3Mpx).即你真的需要8Mpx照片吗?确保使用Camera.Parameters.getSupportedPictureSizes()来确定设备支持的大小.