处理我们捕获图像并通过服务器上传的应用程序.应用程序在 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; }
请建议我.
这是因为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