Jef*_*wab 2 filtering colors ios
我与一个设计团队合作,他们希望我在我们的 iOS 应用程序中实现一个照片过滤器。他们为我提供了两个看起来很像这张图片的文件,每个文件都有不同的颜色。
我被告知显然我应该能够在 Photoshop 中打开它们,比较颜色的差异,然后应用这些差异来过滤应用程序中的图像。老实说,我什至不知道从哪里开始。我已经在 photoshop 中打开了它们,但不知道要寻找什么。我知道如何应用过滤器CIFilter
,我只是不知道应用什么样的过滤器。
有没有人至少能够指出我正确的方向?
他们给你的是一个 3D 查找表或 LUT。除了检查 LUT 之外,您根本不需要在此过程中使用 Photoshop。
看起来您的 LUT 是 25x25x40。每个方块为 25x25,图片中有 8x5=40 个方块。(实际上有 8x4 = 32 个正方形和其上下的部分正方形。这有点奇怪。)每个 25x25 正方形都有一个恒定的蓝色值,红色值随 x 坐标变化,绿色值随 y 坐标变化。
要使用 LUT,您需要为输入图像中的每个像素取 (r, g, b) 值,并在 LUT 中查找新值。
因此,如果您的 (R, G, B) 值为 (128, 52, 215)(假设每个通道为 8 位,因此值在 0-255 之间),那么您需要将它们缩放为在您的 LUT 范围内。
为此,请计算:
Red: 128 / 255 = x / 25
Green: 52 / 255 = x / 25
Blue: 215 / 255 = x / 40
Run Code Online (Sandbox Code Playgroud)
所以你得到:
Red = 13
Green = 5
Blue = 34
Run Code Online (Sandbox Code Playgroud)
现在您将它们用作 LUT 中的坐标。您需要蓝色为 34/40 的正方形。这在您的设置中很棘手,因为它不是一个长行。通常,您只需将瓷砖宽度乘以您想要获得起始像素的瓷砖数量,但我们不能在这里这样做。我建议重新格式化你的 LUT 以这种方式工作。如果你这样做了,你可以乘以 34 * 25 * sizeof(RGB)。到达那里后,您可以将该图块本身视为图像,并查找 (x,y) = (13,5)。(您可以使用 5 * bytesPerRow + 13 * bytesPerPixel 来实现。)
您现在拥有来自 LUT 的颜色。
有一个叫做 CoreImage 的过滤器CIColorCube
,可以让你做类似的事情,但我自己没有使用过。