Android 以错误的方向存储图像
在纵向模式下拍摄的图像将保存在横向模式下。但在横向模式下拍摄的图像会正确保存Android 以错误的方向存储图像,android,Android,在纵向模式下拍摄的图像将保存在横向模式下。但在横向模式下拍摄的图像会正确保存 private class SaveImageTask extends AsyncTask<byte[], Void, Void> { @Override protected Void doInBackground(byte[]... data) { FileOutputStream outStream = null; int rotate = 0;
private class SaveImageTask extends AsyncTask<byte[], Void, Void> {
@Override
protected Void doInBackground(byte[]... data) {
FileOutputStream outStream = null;
int rotate = 0;
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/SELFie");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
// Before saving to the file rotate to portrait and save it in a right ratio.
File outFile = new File(dir, fileName);
Log.d("SaveImageTask","It is a OutPut media file");
outStream = new FileOutputStream(String.valueOf(outFile));
Log.d("SaveImageTask","OutStream");
// writing data to the file
outStream.write(data[0]);
Log.d("SaveImageTask","writing the data to the outStream");
outStream.flush();
Log.d("SaveImageTask","OutStream.flush");
outStream.close();
Log.d("SaveImageTask","closing the outStream");
Log.d(DEBUG_TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath());
// Refreshing the gallery to save recently taken photos.
refreshGallery(outFile);
// After calling the refreshGallery method.
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return null;
// Finally returning the null.
}
}
私有类SaveImageTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(字节[]…数据){
FileOutputStream扩展流=null;
int=0;
试一试{
文件sdCard=Environment.getExternalStorageDirectory();
File dir=新文件(sdCard.getAbsolutePath()+“/SELFie”);
dir.mkdirs();
字符串文件名=String.format(“%d.jpg”,System.currentTimeMillis());
//在保存到文件之前,旋转到纵向并以正确的比例保存。
文件输出文件=新文件(目录,文件名);
Log.d(“SaveImageTask”,“它是一个输出媒体文件”);
outStream=新文件OutputStream(String.valueOf(outFile));
Log.d(“保存图像任务”、“扩展”);
//将数据写入文件
超流写入(数据[0]);
Log.d(“SaveImageTask”,“将数据写入扩展流”);
冲水;
Log.d(“SaveImageTask”、“OutStream.flush”);
exptream.close();
Log.d(“SaveImageTask”,“关闭外扩”);
Log.d(DEBUG_标记,“onPictureTaken-写入字节:“+data.length+”到“+outFile.getAbsolutePath());
//刷新图库以保存最近拍摄的照片。
刷新画廊(outFile);
//调用refreshGallery方法后。
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
}
返回null;
//最后返回空值。
}
}
一些Android摄像头硬件将在横向中创建肖像图像,JPEG文件中的EXIF头指示图像查看器应旋转图像
一些Android摄像头硬件将创建肖像图像作为肖像
对此你真的无能为力。欢迎您扫描生成的JPEG文件中的EXIF标题,并自行旋转图像,但这样做速度慢且占用大量内存。感谢您的快速响应。如果你在保存到画廊之前帮我旋转图片,我会更加感激。在保存到图库之前,我还需要处理图像的纵横比