iOS:将 RGB 滤镜应用于灰度 PNG

标签 ios image-processing filter core-graphics

我有一个灰度 gem 顶 View 。

(PNG 格式,alpha 分量也是如此)

我想根据这张图片创建 12 个小尺寸按钮,每个按钮颜色不同。

为了整洁起见,我想在代码中而不是在某些艺术包中进行外部操作。

任何人都可以提供执行此操作的方法(甚至一些代码)吗?

PS 我知道如何在 GL 中使用大量代码来实现它,我希望有一种使用核心图形/核心动画的更简单方法

编辑:工作解决方案,感谢下面的答案

    CGSize targetSize = (CGSize){100,100};
    UIImage* image;
    {
        CGRect rect = (CGRect){ .size = targetSize };

        UIGraphicsBeginImageContext( targetSize );
        {
            CGContextRef X = UIGraphicsGetCurrentContext();

            UIImage* uiGem = [UIImage imageNamed: @"GemTop_Dull.png"];

            // draw gem
            [uiGem drawInRect: rect];

            // overlay a red rectangle
            CGContextSetBlendMode( X, kCGBlendModeColor ) ;
            CGContextSetRGBFillColor ( X,  0.9, 0, 0,  1 );
            CGContextFillRect ( X, rect );

            // redraw gem 
            [uiGem drawInRect: rect
                    blendMode: kCGBlendModeDestinationIn
                        alpha: 1. ];

            image = UIGraphicsGetImageFromCurrentImageContext();
        }
        UIGraphicsEndImageContext();
    }

最佳答案

最简单的方法是将图像绘制成 RGB 颜色空间 CGBitmapContext ,使用 CGContextSetBlendMode 设置 kCGBlendModeColor,然后用纯色绘制它(例如使用 CGContextFillRect)。

关于iOS:将 RGB 滤镜应用于灰度 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683822/

相关文章:

javascript - 如何将 jquery .not 或 .filter 与数据属性一起使用?

android - 过滤色情/种族歧视的最佳方法?

ios - 如何防止自动聚焦在 Collection View 组合布局上

iphone - 翻页动画到多个作业

python - 开发方法导出ipa报错

opencv - 在具有已知引用距离的图像上测量距离时的透视补偿

iphone - 如何重新启动像 facebook-ios-sdk 这样的应用程序?

python - numpy 矢量化/更高效的 for 循环

matlab - Lucas Kanade 光流,方向矢量

javascript - d3.js 过滤嵌套数据中的空值