首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS中的Exif定位问题

iOS中的Exif定位问题
EN

Stack Overflow用户
提问于 2013-10-07 19:57:00
回答 1查看 3.1K关注 0票数 1

在Safari iOS中,一个已知的问题是,用相机拍摄的大图像上设置了exif方向标志,这使得图像的方向在观看时不正确。例如,如果一个iPhone处于纵向方向,并且拍摄了一张图片,则生成的图像将被旋转成景观。已经创建了名为megapix-image.js和exif.js的Jquery插件,通过检测相机图像上的exif方向标志并自动旋转图像来补偿这种情况。我在我的web应用程序中使用这一点,它在客户端运行良好,但我遇到的问题是,我需要将旋转的映像返回到服务器。发送回服务器的映像是输入type=file控件中的图像。这是megapix图像旋转图像的来源。我需要做的是用旋转的图像替换存储在输入type=file控件中的图像,这样就可以上传图像了。换句话说,只在客户端旋转图像是没有价值的,除非让用户暂时看到图像与他们用相机拍照时的方向相同。最重要的是旋转图像被上传回服务器。我希望我把这句话说清楚了,这是有道理的。如何将旋转的图像返回到输入type=file控件中,使其成为上传的图像,而不是方向不正确的图像?

编辑:

我在各种设备上做了更多的测试:在运行iPhone4的iOS 7、运行iOS 7的iPad和运行iOS 6的iPad上,通过输入type=file控件在Safari和服务器上都存在定位问题。垂直压缩/次采样问题在iOS 7中固定在iPhone4和iPad上。在运行iPhone 7的iOS 5C上,在Safari中方向是正确的,但是存在垂直压缩/次采样问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-11 20:36:50

这一问题已得到如下解决:

正如前面所说的,您不能在文件控件中修改图像文件数据,所以所做的任何事情都必须在服务器端完成。下面是我创建的用于更改图像定向服务器端的VB.Net代码,它运行得非常完美。基本上,它将通过将图像旋转到正确的方向来自动校正任何图像,因此它看起来是正确的:

代码语言:javascript
运行
复制
  Public Function TestRotate(sImageFilePath As String) As Boolean
    Dim rft As RotateFlipType = RotateFlipType.RotateNoneFlipNone
    Dim img As Bitmap = Image.FromFile(sImageFilePath)
    Dim properties As PropertyItem() = img.PropertyItems
    Dim bReturn As Boolean = False
    For Each p As PropertyItem In properties
      If p.Id = 274 Then
        Dim orientation As Short = BitConverter.ToInt16(p.Value, 0)
        Select Case orientation
          Case 1
            rft = RotateFlipType.RotateNoneFlipNone
          Case 3
            rft = RotateFlipType.Rotate180FlipNone
          Case 6
            rft = RotateFlipType.Rotate90FlipNone
          Case 8
            rft = RotateFlipType.Rotate270FlipNone
        End Select
      End If
    Next
    If rft <> RotateFlipType.RotateNoneFlipNone Then
      img.RotateFlip(rft)
      System.IO.File.Delete(sImageFilePath)
      img.Save(sImageFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)
      bReturn = True
    End If
    Return bReturn

  End Function
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19233527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档