相关疑难解决方法(0)

更快的算法来更改位图中的色相/饱和度/亮度

我正在尝试过滤位图图像以增加或减少色相、饱和度和亮度值。

我的代码运行完美,但速度很慢

我在内存中锁定了两个位图:原始源和当前目标。用户可以移动各种轨迹栏控件来修改每个值,然后将其转换为 HSL 值。例如,轨迹栏上的值对应于 -1.0 到 1.0 的范围。

每次引发轨迹栏值更改的事件时,我都会运行一个函数来锁定目标位图并将 HSL 值与源位图一起应用,然后将结果存储在目标位图中。完成后,我解锁目标位图并在屏幕上绘制图像。

以前,我对其他过滤器使用了查找表,因为我正在进行每字节操作。但是我不知道如何使用 HSL 来应用它。这是我正在使用的代码:

byte red, green, blue;

for (int i = 0; i < sourceBytes.Length; i += 3)
{
    blue = sourceBytes[i];
    green = sourceBytes[i + 1];
    red = sourceBytes[i + 2];

    Color newColor = Color.FromArgb(red, green, blue);

    if (ModifyHue)
        newColor = HSL.ModifyHue(newColor, Hue);

    if (ModifySaturation)
        newColor = HSL.ModifySaturation(newColor, Saturation);

    if (ModifyLightness)
        newColor = HSL.ModifyBrightness(newColor, Lightness);

    destBytes[i] = newColor.B;
    destBytes[i + 1] …
Run Code Online (Sandbox Code Playgroud)

.net c# hsl bitmap

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

bitmap ×1

c# ×1

hsl ×1