gpt4 book ai didi

c# - 图像格式转换异常缓慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:03 26 4
gpt4 key购买 nike

我正在从外部系统接收图像,格式为 BGR 值序列后跟一个空字节。该序列看起来有点像...

[B,G,R,0,B,G,R,0,...,B,G,R,0] 其中每个 BGR0 是图像中的单个像素。

我需要在 .NET 位图中使用它,这样我就可以对其执行一些操作,并提出了以下函数来执行此操作:

    private Bitmap fillBitmap(byte[] data, int width, int height)
{
Bitmap map = new Bitmap(width, height);
for (int i = 0; i < data.Length; i += 4)
{
int y = ((i / 4) / width);
int x = ((i / 4) - (y * width));
int b = data[i];
int g = data[i + 1];
int r = data[i + 2];
Color pixel = Color.FromArgb(r, g, b);
map.SetPixel(x, y, pixel);
}
return map;
}

这通常没问题,除非我的大部分图像都是 1920x1200...所以我有一个迭代超过 200 万次的循环。即便如此,这也不会太糟糕,因为 200 万次迭代对任何现代处理器来说都不会造成太大负担。

但出于某种原因,在我的服务器上一个非常强大的 Xeon 上运行这个循环可能需要 5-15 秒以上的时间。并行化循环是微不足道的,但我怀疑有更好的方法来解决这个问题。任何帮助将不胜感激!

最佳答案

Bitmap.LockBits Method 的描述说,

You can change the color of an image with the SetPixel method, although the LockBits method offers better performance for large-scale changes.

另一种方法,我猜,可能是使用 Bitmap(Stream) Constructor ,在创建与位图文件格式匹配的 Stream 之后。

关于c# - 图像格式转换异常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463430/

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