【发布时间】:2012-10-19 22:59:21
【问题描述】:
我需要在我的磁盘上制作一个 PNG 图像的副本。事实上我需要更复杂的思考,但这是其中的一部分。 所以,
我正在这样做:
Bitmap oldbmp = new Bitmap( filename );
Bitmap newbmp = new Bitmap(oldbmp.Size.Width, oldbmp.Size.Height, oldbmp.PixelFormat);
// if I don't do this, destination image looks bigger and clipped
newbmp1.SetResolution(oldbmp.HorizontalResolution, oldbmp.VerticalResolution);
Graphics graphics = Graphics.FromImage(newbmp);
graphics.DrawImageUnscaled(oldbmp,0,0);
newbmp.Save( filename2 );
我所拥有的是第二个文件具有不同的文件大小(有时比第一个更大,有时小于第一个)。
我猜编码有问题,但无法理解到底是什么。我必须更改或添加什么?
附: Bitmap.Clone( ... ) 不能满足我的需要。
更新:
好吧,我的实际任务是:
将文件剪切成几个较小的部分。
将部件保存到磁盘。
从磁盘读取部分。
将零件组装回完整图像。
将完整图像保存到磁盘。
第一个文件是 PNG,最后一个文件是 PNG,如果部分未更改,它们必须具有相同的大小。
不同的大小很重要,因为有些文件非常大,差异可能超过 2 MB!
更新2:
第一张图片。执行代码后文件的大小变大了。
【问题讨论】:
-
您需要复制还是更改?如果您只是想要一份副本,请使用
File.Copy... -
您的问题不清楚您要更改磁盘文件并保存吗?否则正如@driis 所说,使用'File.Copy'
-
我猜想更改然后从问题中保存,但首先保存并测试以验证保存是否正常工作,问题是由于文件大小不同,测试“失败”。我认为文件大小不同并不重要,只要结果是打开时看起来相同的有效 png。
-
PNG 使用无损压缩,即使尺寸和位深相同,如果图像不同,它也不保证文件大小相同。
-
filename2 是 PNG 图像吗?我不是说它是文件扩展名,在文本编辑器中打开它并检查文件顶部的“PNG”。是不是看起来一模一样。