0
我正在運行多線程圖像壓縮過程。原始文件是1280x 960高分辨率PNG文件,大約1800KB。我需要壓縮到< 70KB JPEG文件。當我處理幾輛車時,這個過程運行良好。當我處理超過20輛車時,我開始出現內存不足的錯誤。這是代碼。圖像壓縮過程出現內存不足錯誤
private static ImageCodecInfo GetEncoderInfo(String mimeType) int j; ImageCodecInfo []編碼器; encoders = ImageCodecInfo.GetImageEncoders(); (j = 0; j < encoders.Length; ++ j) if(encoders [j] .MimeType == mimeType) return encoders [j]; } return null; }
public static void SaveAsJpg(string inFilePath = null, string outputFileName = null, long compression = 70, long quality = 70)
{
System.Drawing.Image orgimage = System.Drawing.Image.FromFile(inFilePath);
var imgIn = new Bitmap(orgimage);
var imgOut = new Bitmap(imgIn.Width, imgIn.Height);
Graphics g = Graphics.FromImage(imgOut);
g.Clear(Color.White);
g.DrawImage(imgIn, 0, 0, imgIn.Width, imgIn.Height);
EncoderParameters encoding = new EncoderParameters(2);
encoding.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, compression);
encoding.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
imgOut.Save(outputFileName, myImageCodecInfo, encoding);
}
在此先感謝您的任何建議。
感謝您的輸入。我完全忘記了處理圖形對象。 – Amy 2011-04-07 19:53:59