我正在.net中创建一些非常大的图像,我正在使用JPEG压缩来降低文件大小 . 但是,如果图像宽度或高度超过65,000(ish)像素,我就不能再使用jpeg压缩 . 是否有JPEG的最大尺寸限制?

抛出的异常是:

System.Runtime.InteropServices.ExternalException(0x80004005):GDI中发生一般错误 . 在System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)

保存图像的代码:

public static void SaveImage(ref Bitmap b, string fName)
    {
        long quailty = 75;
        ImageCodecInfo jpgEncoder = getEncoder(ImageFormat.Jpeg);
        Encoder myEncoder = Encoder.Quality;
        using (EncoderParameters myEncoderParameters = new EncoderParameters(1))
        {
            using (EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quailty))
            {
                myEncoderParameters.Param[0] = myEncoderParameter;
                b.Save(fName, jpgEncoder, myEncoderParameters);
            }
        }
    }

在上述例外情况下,图像为2,000x100,000,幻数似乎在65k范围内,包括宽度和高度 . 比如,我可以做4,000x55,000而不是2x70000 .

我也尝试使用BitmapWriter,使用下面的代码,我得到错误:“图像尺寸超出了此编解码器支持的范围”

wb = new WriteableBitmap(2000, 100000, 96, 96, PixelFormats.Bgra32,    null);

using (FileStream stream5 = new FileStream(fileName, FileMode.Create))
{
PngBitmapEncoder encoder5 = new PngBitmapEncoder();
encoder5.Frames.Add(BitmapFrame.Create(wb));
encoder5.Save(stream5);
}