gpt4 book ai didi

c# - 替换位图/图像中特定颜色的有效方法

转载 作者:行者123 更新时间:2023-11-30 12:47:55 26 4
gpt4 key购买 nike

在我的灰度图片中,我需要找到特定的值并将其替换为某种颜色,例如黄色。这是我现在拥有的代码,但它没有我需要的那么快。有没有更有效的方法来实现这一目标?我对 ColorMatrix 很生气类,但找不到在不影响整个图像的情况下替换单个值的方法。

unsafe
{
byte stlThres = 115;

int bytePerPixel = Image.GetPixelFormatSize(kpImageViewer1.Image.PixelFormat) / 8;
var data = kpImageViewer1.Image.LockBits(new Rectangle(0, 0, kpImageViewer1.Image.Width, kpImageViewer1.Image.Height), ImageLockMode.WriteOnly, kpImageViewer1.Image.PixelFormat);
for (int y = 0; y < data.Height; y++)
{
byte* row = (byte*)data.Scan0 + (y * data.Stride);

for (int x = 0; x < data.Width; x++, row += bytePerPixel)
{
if (row[0] == stlThres)
{
row[0] = 0; //b
row[1] = 255; //g
row[2] = 255; //r
if (bytePerPixel == 4)
{
row[3] = 255; //a
}
}
}
}
kpImageViewer1.Image.UnlockBits(data);
}

最佳答案

在 4 channel 图像的情况下,每个像素为 4 字节(每个 channel 8 位),您可以使用由 row[0] 索引的 256 条目查找表并分配所有四个 channel 同时作为一个 32 位 int

关于c# - 替换位图/图像中特定颜色的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com