最终我正在研究用于iPhone的盒子模糊功能。
该功能将采用UIImage并绘制透明副本,首先是两侧,然后拍摄该图像并在上方和下方绘制透明副本,返回一个非常模糊的图像。
阅读Drawing with Quartz 2D Programming Guide,建议使用CGLayers进行此类操作。
本指南中的示例代码对我来说有点密集,所以我希望有人向我展示一个非常简单的示例,即获取 UIImage 并将其转换为 CGLayer 然后我会绘制副本并返回 UIImage 。
如果值是硬编码的(为简单起见),那就没问题了。这只是我的头脑,而不是生产代码。
答案 0 :(得分:2)
UIImage *myImage = …;
CGLayerRef layer = CGLayerCreateWithContext(destinationContext, myImage.size, /*auxiliaryInfo*/ NULL);
if (layer) {
CGContextRef layerContext = CGLayerGetContext(layer);
CGContextDrawImage(layerContext, (CGRect){ CGPointZero, myImage.size }, myImage.CGImage);
//Use CGContextDrawLayerAtPoint or CGContextDrawLayerInRect as many times as necessary. Whichever function you choose, be sure to pass destinationContext to it—you can't draw the layer into itself!
CFRelease(layer);
}
这在技术上是我的第一个iPhone代码(我只在Mac上编程),所以要小心。不过我之前使用过CGLayer,据我所知,Quartz在iPhone上并没有什么不同。
...并以UIImage身份返回。
我不知道如何做这部分,因为从未与UIKit合作过。