我正在创建一个Android应用程序,用于发送用户明确拍摄的照片并将其发送到Web服务器。接下来,我在Web应用程序中显示这些图片。
但是,从智能手机拍摄的照片以纵向方式显示在服务器中,就像在横向模式下拍摄一样,反之亦然。
知道为什么会这样吗?
答案 0 :(得分:4)
图像属性为“exif标签”。这讲述了图像的方向。您可以在将图像发送到服务器之前检查此标记的值。
您可以使用以下方法获取未旋转的图像
public final static Bitmap getUnRotatedImage(String imahePath, Bitmap rotattedBitmap)
{
int rotate = 0;
try
{
File imageFile = new File(imahePath);
ExifInterface exif = new ExifInterface(imageFile.getAbsolutePath());
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation)
{
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
Matrix matrix = new Matrix();
matrix.postRotate(rotate);
return Bitmap.createBitmap(rotattedBitmap, 0, 0, rotattedBitmap.getWidth(), rotattedBitmap.getHeight(), matrix,
true);
}
它需要两个参数,图像路径和位图图像。
在将图像发送到服务器之前尝试此方法。