我的应用要求用户拍照并保存。
我注意到三星Galaxy S2拍了一张肖像照片
但是当我将它保存到服务器时,我只能在服务器中看到它。
(即使它是以肖像拍摄的)。
使用其他手机(三星S4,Nexus 5)并不会发生这种情况。
当我看到照片库时,我看到了照片中的照片。
更新
奇怪的是,在我的java代码中,它似乎是纵向方向
所以我真的不明白:
if (getContext().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//a
}else {
//b
}
但是我看到了一些奇怪的东西:使用S2相机时,设置和其他原生对话都是风景。见附件:
UPDATE2
我已检查exif.getAttributeInt(ExifInterface.TAG_ORIENTATION
并获得6(ExifInterface.ORIENTATION_ROTATE_90)
所以我试图将其设置为ORIENTATION_ROTATE_270或ORIENTATION_NORMAL
但它没有帮助
ExifInterface exif;
try {
exif = new ExifInterface(imageFilename);
int orientation =
exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
exif.setAttribute(ExifInterface.TAG_ORIENTATION,
String.valueOf(ExifInterface.ORIENTATION_ROTATE_270));
exif.saveAttributes();
orientation =
exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
boolean b = orientation == Configuration.ORIENTATION_LANDSCAPE;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
你是对的。 Camera.Parameters.setRotation()的文档非常清楚:
相机驱动程序可以在EXIF标题中设置方向 旋转图片。或者司机可以旋转图片和 EXIF缩略图。如果Jpeg图片旋转,则方向在 EXIF标题将丢失或1(行#0是顶部,列#0是左侧 侧)。
解决方案是在上传之前或者在服务器上实际执行图片的旋转(选择取决于您的产品要求)。您可以使用Java MediaUtil库,例如https://stackoverflow.com/a/15302674/192373