位图深拷贝更改 PixelFormat
Posted
技术标签:
【中文标题】位图深拷贝更改 PixelFormat【英文标题】:Bitmap deep copy changing PixelFormat 【发布时间】:2013-11-18 09:37:56 【问题描述】:Bitmap img = new Bitmap("C:\\temp\\images\\file.jpg");
img.PixelFormat 是 Format24bppRgb
当我在做深拷贝时
Bitmap img2 = new Bitmap(img);
img.PixelFormat 改为 Format32bppArgb
为什么会改变像素格式?如果对象不进行深拷贝,如何为对象进行深拷贝?
【问题讨论】:
How to create a Bitmap deep copy 的可能重复项 【参考方案1】:您可以像这样克隆位图,这将创建一个深层副本:
Bitmap img = new Bitmap("C:\\temp\\images\\file.jpg");
// Clone the bitmap.
Rectangle cloneRect = new Rectangle(0, 0, img.Width, img.Height);
System.Drawing.Imaging.PixelFormat format =
img.PixelFormat;
Bitmap img2 = img.Clone(cloneRect, format);
【讨论】:
我遇到了 [***.com/questions/1053052/… GDI+ 中发生的一般错误)。我能够通过创建位图的副本来解决它。但现在我注意到它意外地改变了 PixelFormat。不幸的是,这个解决方案并没有解决问题......【参考方案2】:刚刚找到解决方案,而不是 new Bitmap(img) 使用 Bitmap img2 = (Bitmap) img.Clone();
不知道这是正确的解决方案,但它可以完成工作。
【讨论】:
以上是关于位图深拷贝更改 PixelFormat的主要内容,如果未能解决你的问题,请参考以下文章