Android应用程序将图片发送到Web服务器并旋转图片

时间:2014-02-10 10:32:18

标签: android html image web-applications webserver

我正在创建一个Android应用程序,用于发送用户明确拍摄的照片并将其发送到Web服务器。接下来,我在Web应用程序中显示这些图片。

但是,从智能手机拍摄的照片以纵向方式显示在服务器中,就像在横向模式下拍摄一样,反之亦然。

知道为什么会这样吗?

1 个答案:

答案 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);
    }

它需要两个参数,图像路径和位图图像。

在将图像发送到服务器之前尝试此方法。