我在处理ImageJob期间有些图片被旋转时出现问题。
我在检测从某些(现代)移动设备上传的图片的正确旋转时遇到问题。
图像来自iPad mini和Galaxy S5。我拍摄的是人像照片,但上传后会旋转并调整大小。如果我拍摄风景照片,处理工作正常。
我尝试过使用autorotate插件,但这似乎没什么区别。
代码是基本的,适用于某些图像,但不适用于上述其他图像。
HttpPostedFileBase file = base.Request.Files["photo"];
ImageResizer.ImageJob i =
new ImageResizer.ImageJob(file,
"~/OrigFiles/" + cvm.Id + ".<ext>",
new ImageResizer.Instructions("width=768;height=1024;format=jpg;mode=max;autorotate=true;"));
i.CreateParentDirectory = true;
i.Build();
我将手机中的照片通过电子邮件发送到我的笔记本电脑并上传了它,这很好用,这很奇怪。这可能是移动浏览器上传问题吗?在新设备上,iOS Safari和Chrome都会出现此问题。奇怪的是,在较老的第一代Nexus 7肖像图像上工作。
进一步说明
以下是诊断:
You are using plugins from the Creative Edition: DiskCache (Performance Edition), WatermarkPlugin (Creative Edition)
Registered plugins:
ImageResizer.Plugins.Basic.DefaultEncoder
ImageResizer.Plugins.Basic.NoCache
ImageResizer.Plugins.Basic.ClientCache
ImageResizer.Plugins.Basic.Diagnostic
ImageResizer.Plugins.Basic.SizeLimiting
ImageResizer.Plugins.MvcRoutingShim.MvcRoutingShimPlugin
ImageResizer.Plugins.DiskCache.DiskCache
ImageResizer.Plugins.Watermark.WatermarkPlugin
ImageResizer.Plugins.Basic.AutoRotate
Configuration:
<resizer>
<plugins>
<add name="MvcRoutingShim" />
<add name="DiskCache" />
<add name="Watermark" />
<add name="AutoRotate" />
</plugins>
<watermarks>
<otherimages path="~/watermarks" right="20" bottom="20" width="20" height="20" />
<group name="portraitBG">
<image path="~/PORTRAIT.png" imageQuery="" top="0" left="0" />
<text text="#{name}" vertical="false" align="center" top="818" fontSize="60" color="FFF" />
</group>
<group name="landscapeBG">
<image path="~/LANDSCAPE.png" imageQuery="" top="0" left="0" />
<text text="#{name}" vertical="false" left="50" top="650" fontSize="60" color="FFF" />
</group>
</watermarks>
</resizer>
示例图片
以下是示例图片: Sample Image
https://github.com/recurser/exif-orientation-examples/blob/master/Portrait_8.jpg
当我下载样本图像并从我的笔记本电脑上传时,它可以保存为肖像。当我下载并从我的手机上传(三星S5运行4.4.2)时,它无法正常工作并保存为风景。