我在那里看过很多post? 但我找不到正确答案。
我试着这样做:
@Override public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera) { try { Bitmap bitmap = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, 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, 0, 0, width, height, matrix, false); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, os); os.close(); ...
有没有办法旋转图片,而不使用BitmapFactory? 我想要旋转图片而不会损失质量!
也许您可以根据需要使用Camera.setDisplayOrientation拍摄已旋转的照片? 检查Android相机旋转 。 此外,研究Camera.Parameters.setRotation()。 其中一种技术应该适合你。
否则你的代码看起来很好,除了在Bitmap.compress上使用参数95,你需要使用100进行无损压缩。
为避免出现内存不足exception,请使用Camera.Parameters.setPictureSize()获取较低分辨率的图片(例如3Mpx)。 即你真的需要8Mpx照片吗? 确保使用Camera.Parameters.getSupportedPictureSizes()来确定设备支持的大小。