ImageResizer 和删除图像 EXIF 信息的后果

ImageResizer and ramifications of removing image EXIF information

我们的 Web 应用程序从许多不同的第三方来源接收图像文件。业务规则规定我们将接收到的原始图像保存下来,不进行任何类型的图像处理。当使用 ImageResizer 通过专用 Web 服务器为图像请求图像时,我们会处理调整大小、水印、旋转等。 autorotate=true 和 copymetadata=true 是图像服务器上的默认设置。

其中一个第三方来源对图像旋转的处理有问题。当他们最初收到图像时,他们会通过旋转图像来遵循图像的 EXIF 方向数据。但是,它们保留了 EXIF 方向数据的预旋转版本。所以当图像出现在我们面前时,它被旋转了,但 EXIF 方向标志仍然保留在图像中。当从我们的图像服务器请求图像时,方向标志被处理(通过 autorotate=true),结果请求的图像再次旋转(显示不正确),并删除 EXIF 方向数据。这会导致用户不满意。

说服第三方改变他们处理 EXIF 数据的方式不是一种选择。

我们计划对这些特定图像使用的解决方案是在请求时设置 autorotate=false。但是,EXIF 方向信息仍然存在。由于我没有看到仅删除 EXIF 方向数据的 ImageResizer 选项(除了进入 System.Drawing 命名空间,我们宁愿不这样做),我们正在考虑为这些特定图像设置 copymetadata=false。

提供没有元数据的图像的 Web 服务器有什么缺点?具体关于颜色 space/profiles?这些图像最终被复制并用于其他网站。

ImageResizer 不会复制任何元数据或 EXIF 方向数据,除非您告诉它这样做。在那些损坏的图像上设置 &autorotate=false 将正常工作。

即使您使用的是 CopyMetadata,它也会 specifically excludes 复制方向数据和其他 bitmap-specific 数字。您是否见过使用 &autorotate=false 请求的图像后来在查看器中出现进一步旋转的情况?

CopyMetadata 主要用于复制版权和 gps 数据。它不处理 XML 或 XMP 元数据,也不复制颜色 spaces - ImageResizer 始终输出 sRGB 图像,互联网默认 - 不需要颜色 space 信息。