【发布时间】:2011-10-12 04:09:22
【问题描述】:
我看到很多关于如何加载带有 alpha 通道的 PNG 并显示它的问题,但没有一个关于如何加载具有 alpha 通道但忽略 alpha 通道的 PNG,从而显示底层 RGB 数据。
我尝试简单地从 Alpha 通道中删除所有数据,但我只得到黑色像素而不是我想要的颜色数据。似乎从我创建 Bitmap 对象的那一刻起,它不包含任何 alpha 为 0 的像素中的颜色信息,尽管我向您保证,该信息实际上存在于 PNG 中。
要清楚,如果我的图像包含具有以下值的像素:(R:255 G:128 B:128 A:0)我需要该像素为(R:255 G:128 B:128 A:255 ),而不是 (R:0 G:0 B:0 A:255)。
谢谢
编辑:之前的信息不正确。位图包含使用时的所有信息:
Bitmap myImage = Bitmap("filename.png");
我做错了什么是后来使用:
Bitmap otherImage = Bitmap(myImage);
看来这就是我需要的数据无效的原因。 相反,我现在正在使用
Bitmap otherImage = (Bitmap)(myImage.Clone());
然后使用锁定位手动将 Alpha 通道设置为不透明。 我希望这对将来的某人有用。
【问题讨论】:
标签: c# bitmap png alpha imaging