从Android服务器下载时,图像倾斜90度?

 俺是胖墩墩_499 发布于 2023-02-08 09:11

处理我们捕获图像并通过服务器上传的应用程序.应用程序在 Android和I Phone中.当我们从Android发布图像时,它们的数量是Kilo Bytes但是当我们从I Phone发布图像时它们是MB大小.

当我们在IPHONE 5上使用URL在浏览器上发布图像时,它们看起来很好,但是当我们在Android设备中下载该图像并在图像视图中显示时,它们会向左侧倾斜90度.

在Android或I Phone中下载图像后,我没有使用任何旋转代码.

在I Phone中,图像看起来很好.

从Android捕获的图像也是可见的.从I Phone中捕获的低分辨率图像也可以直接在Android中看到.

从Android上传的图片:

https://s3.amazonaws.com/WeddingApp/Weddingimage/933_6_stan.jpg

从I Phone上传的图片:

https://s3.amazonaws.com/WeddingApp/Weddingimage/937_6_stan.jpg


public static boolean downloadFile(final String fileURL,File directory,Context CONTEXT){
        try{
            URL url = new URL(fileURL);

            URLConnection ucon = url.openConnection();
            ucon.setReadTimeout(35000);
            ucon.setConnectTimeout(10000);

            InputStream is = ucon.getInputStream();
            BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);

            File file = directory;

            if (file.exists())
            {
                file.delete();
            }
            file.createNewFile();

            FileOutputStream outStream = new FileOutputStream(file);
            byte[] buff = new byte[5 * 1024];

            int len;
            while ((len = inStream.read(buff)) != -1)
            {
                outStream.write(buff, 0, len);
            }

            outStream.flush();
            outStream.close();
            inStream.close();

        }
        catch (IOException e){  //IF SDCARD NOT EXIST THEN PASS RESPONSE TRUE`  
            e.printStackTrace();
            return false;
        }catch(Exception e){
            e.printStackTrace();
            return false;
        }

        return true;
    } 

请建议我.

1 个回答
  • 这是因为iPhone傻乎乎的新相机实现.我在下面找到了研究(下面给出的来源):

    1. iPhone相机对"向上"方向的解释是从我们所知的实际"向上"方向旋转90度.你和我称之为"up",是iphone的"左"或"右".相机的方向已更改.这样做是为了让他们可以支持使用音量按钮拍照.

    2.但是,要注意其他设备和相机具有正常方向,并且这些设备和浏览器正确显示图像,iOS会将EXIF数据添加到上传的图像中.这是在图片上传时添加的.如链接中所述,EXIF是一个元数据,其中包含图像实际应该如何显示的所有信息.

    3.下载图像的目标平台应该读取EXIF数据,然后显示图像的正确表示.因此,如果目标平台读取EXIF,它将意识到所接收的图像是90度旋转,并且它应该依赖于EXIF数据,而不是接收的是什么.这就是iPhone相机应用程序可以正确显示图像的原因.

    4然而,并非所有人都阅读EXIF.知道EXIF的应用和浏览器,读取图像的EXIF数据并正确显示.但是那些不了解EXIF的人,不会读取那些数据,并且显示的图像与接收完全一致 - > 旋转90度

    5人们已经解决了这个问题,在拍摄照片之前将iPhone旋转90度(以便在拍摄照片之前将相机朝向正确)

    资源:

    1. 来源1

    2. 来源2

    其他有同样问题的人:

    1. SO Post 1

    2. SO Post 2

    2023-02-08 09:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有