位图深拷贝改变PixelFormat

时间:2013-11-18 09:37:57

标签: c# .net bitmap deep-copy

Bitmap img = new Bitmap("C:\\temp\\images\\file.jpg");

img.PixelFormat是Format24bppRgb

当我做深拷贝时

Bitmap img2 = new Bitmap(img);

img.PixelFormat更改为Format32bppArgb

为什么它会改变像素格式?以及如果不进行深层复制,如何为对象制作深层复制?

2 个答案:

答案 0 :(得分:1)

刚找到解决方案而不是新的Bitmap(img)使用Bitmap img2 = (Bitmap) img.Clone();不知道它是正确的解决方案,但是它可以完成这项工作。

答案 1 :(得分: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);