lis*_*aro 9 java camera android photo bytearray
由于某种原因,我的相机应用程序保存所有旋转90度的照片(图片只在横向模式下用相机拍摄时看起来正确)我相信照片应该自动旋转照片但我读到三星设备有问题(我还没有能够在另一个品牌测试它,所以我不知道是否是这种情况).这是我的代码:
public void onPictureTaken(byte[] data, Camera camera) {
// Generate file name
FileOutputStream outStream = null;
outStream = new FileOutputStream(filePath);
outStream.write(data);
outStream.close();
Run Code Online (Sandbox Code Playgroud)
我认为可以通过检查方向和旋转字节数组来修复它,但是必须有一种更直接的方法来处理它,因为处理字节数组很麻烦.如何确保照片的保存方式与拍摄方向相符?
尝试这样的事情:
int orientation = Exif.getOrientation(data);
Log.d("#", "onPictureTaken().orientation = " + orientation);
if(orientation != 0) {
Bitmap bmpSrc = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap bmpRotated = CameraUtil.rotate(bmpSrc, orientation);
bmpSrc.recycle();
try {
FileOutputStream localFileOutputStream = new FileOutputStream(filePath);
bmpRotated.compress(Bitmap.CompressFormat.JPEG, 90,localFileOutputStream);
localFileOutputStream.flush();
localFileOutputStream.close();
bmpRotated.recycle();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
} else {
try {
FileOutputStream localFileOutputStream = new FileOutputStream(filePath);
localFileOutputStream.write(data);
localFileOutputStream.flush();
localFileOutputStream.close();
} catch (IOException localIOException)
{
Log.e("#",localIOException.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1204 次 |
最近记录: |