.net保存非常大的图片

时间:2017-01-26 15:14:08

标签: .net image bitmap jpeg

我正在.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);
}

0 个答案:

没有答案
相关问题