I am currently handling very large images, which are basically generated by stitching together many smaller images (e.g. panorama or photo mosaic software). In order to avoid out-of-memory exceptions (in memory are only "maps" of how to arrange the smaller images), I wrote some code saving these images line by line as bitmaps using BinaryWriter and LockBits. So far, so good.
现在的问题是,我也希望将这些形象作为吉卜赛人(或巴布亚新几内亚)拯救出来。 自2006年以来 我认为,现在只有两种途径:
(1) 类似于图纸储蓄程序。 形成一些 j头并按行节约大图像线,在以前压缩大图像。 但我对如何执行压缩意见没有任何想法。
(2) 将已节省的借方图翻译成存储器,并作为编码分类予以保存。
由于第二种做法似乎比较容易,我尝试了这样的办法:
FileStream fsr =
new FileStream("input.bmp", FileMode.Open, FileAccess.Read);
FileStream fsw =
new FileStream("output.jpg", FileMode.CreateNew, FileAccess.Write);
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] =
new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80L);
Bitmap bmp = new Bitmap(fsr);
bmp.Save(fsw, GetEncoder(ImageFormat.Jpeg), encoderParameters);
bmp.Dispose();
现在的问题是,“节省费用的方法”首先试图将借方地图完全装入记忆中,从而造成非主题性的例外。
我非常乐于就如何解决或绕过这一问题提出任何建议。