gpt4 book ai didi

ios - 如何使用 ios-image-filters 像在 Photoshop 中一样更改 UIImage 的颜色级别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:12 24 4
gpt4 key购买 nike

我必须更改 UIImage 的颜色级别,并根据此 post我正在尝试使用开源库 ios-image-filters但我不知道如何使用方法
- (UIImage*) levels:(NSInteger)black mid:(NSInteger)mid white:(NSInteger)white;

我不是设计师,也不太了解 Photoshop :(
这是 Photoshop 的屏幕截图和我应该应用于我的 UIImage 的颜色级别: Screenshot of photoshop

下面是我尝试使用 levels 方法的方式:

UIImage *image = [UIImage imageNamed:@"my_image.png"];
image = [image levels:45 mid:0.95 white:238]; // 0.95 is float/double and it's obviously not the good way to do what I want.

根据方法注释,所有参数的值应介于 0-255 之间。但是Photoshop中的mid参数是一个值-9.99-0.01

Photoshop 中的黑白级别显然是不错的值,但我不明白中间值是如何工作的。我应该如何转换它?

所以我的问题是:如何像在 Photoshop 中一样使用 levels 方法?

最佳答案

我不确定它们是否完全具有可比性。查看源代码,该库的 levels 方法正在调用一个简单的线性插值函数(暂时忽略 whiteblack 内容,然后关注 mid 以及它如何影响 color):

int calcLevelColor(int color, int black, int mid, int white)
{
if (color < black) {
return 0;
} else if (color < mid) {
int width = (mid - black);
double stepSize = ((double)width / 128.0f);
return (int)((double)(color - black) / stepSize);
} else if (color < white) {
int width = (white - mid);
double stepSize = ((double)width / 128.0f);
return 128 + (int)((double)(color - mid) / stepSize);
}

return 255;
}

但是 Photoshop 在“色阶”中的中点使用了一个 Gamma 值,一个指数函数,其结果是 color^(1/gamma),即 pow(color, 1.0/gamma)(其中 color 是介于 0.0 和 1.0 之间的值,gamma 大于零且小于十)。这就是为什么 Photoshop 中点的值遵循对数刻度而不是线性刻度。


如果您想使用像 Photoshop 这样的中点值(无论如何,对于照片,它可能比这个 ios-image-filters 库中的再现更好)使用 How can I map Photoshop's level adjustment to a Core Image filter? 中讨论的 Core Image 过滤器.

关于ios - 如何使用 ios-image-filters 像在 Photoshop 中一样更改 UIImage 的颜色级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240466/

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