【发布时间】:2013-07-20 07:51:02
【问题描述】:
用户向我的应用提供了一张图片,应用需要从中制作蒙版:
掩码包含原始图像中每个透明像素的红色像素。
我尝试了以下方法:
Bitmap OrgImg = Image.FromFile(FilePath);
Bitmap NewImg = new Bitmap(OrgImg.Width, OrgImg.Height);
for (int y = 0; y <= OrgImg.Height - 1; y++) {
for (int x = 0; x <= OrgImg.Width - 1; x++) {
if (OrgImg.GetPixel(x, y).A != 255) {
NewImg.SetPixel(x, y, Color.FromArgb(255 - OrgImg.GetPixel(x, y).A, 255, 0, 0));
}
}
}
OrgImg.Dispose();
PictureBox1.Image = NewImg;
我担心慢速 PC 的性能。有没有更好的方法来做到这一点?
【问题讨论】:
-
我会使用完全相同的方法。它很慢,但请记住,您正在处理像素,并且它的数量可能非常大。在任何计算机中,只分析一张图像应该是一个非常快速的过程。
-
对于非常大的图像,您可以考虑使用
Task或worker thread而不是冻结 UI 直到完成处理的主线程。 -
我已经为此使用了
BackgroundWorker。
标签: c# .net vb.net image bitmap