【问题标题】:.Net - Argument Exception When Trying to Convert Bitmap to JPEG.Net - 尝试将位图转换为 JPEG 时出现参数异常
【发布时间】:2009-10-16 14:50:42
【问题描述】:

所以我试图在代码中将位图图像转换为 JPEG,但我不断收到此错误:

未处理的类型异常 'System.ArgumentException' 发生在 System.Drawing.dll

附加信息:参数是 无效。

这里是相关代码。所有路径都正确且 EncoderParameter 不为空,请问还有什么原因造成的?

ImageCodecInfo codecInfo = null;

foreach( ImageCodecInfo codec in  ImageCodecInfo.GetImageEncoders())
{
    if (codec.MimeType != "image/jpeg") { continue; }

    codecInfo = codec;
    break;
}

EncoderParameters encoderParameters = new EncoderParameters();
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85);
using (Bitmap bitmapToConvert = new Bitmap(filePathIn))
{
    bitmapToConvert.Save(filePathOut, codecInfo, encoderParameters);
}

【问题讨论】:

  • 在哪一行出现错误?
  • 它在创建位图对象时位于“使用”行。

标签: .net image-processing jpeg


【解决方案1】:

哇!

encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85);

应该是:

encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85L);
//OR
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, (long)85);

在 IL 中,85 保留为 int,而 GDI 后端不喜欢这样,它需要一个 long。 我讨厌非描述性的例外。

好的,谢谢大家的时间。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2011-11-16
    相关资源
    最近更新 更多