C#:在 JPEG 文件中保留 COM 标记无 EXIF

问题描述

我正在执行 90° rotation with minimal loss,使用以下代码

System.Drawing.Image originalImage = System.Drawing.Image.FromFile("input.jpg");
ImageFormat sourceFormat = originalImage.RawFormat;
EncoderParameters encoderParams = null;
try
{
    if (sourceFormat.Guid == ImageFormat.Jpeg.Guid)
    {
        encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = new EncoderParameter(Encoder.Transformation,(long)EncoderValue.TransformRotate90);
    }
    originalImage.Save("output.jpg",GetEncoder(sourceFormat),encoderParams);
}
finally
{
    if (encoderParams != null)
        encoderParams.dispose();
}

然而,Save 函数似乎从原始(纯的,无 EXIF)JPEG COM 标记 (0xFE) 创建 EXIF 元数据。我不希望输出 JPEG 中有 EXIF 标记。我也想保留原来的COM标记。我可以使用应用程序中的哪些 C# API 来保存我的旋转缓冲区?

使用 jpegdump(dicom3tools 包):

$ jpegdump < input.jpg
[...]
Offset 0x0014 Marker 0xfffe COM Comment length variable 0x10

虽然:

$ jpegdump < output.jpg
[...]
Offset 0x0014 Marker 0xffe1 APP1 Reserved for Application Use length variable 0x5a

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)