我想要实现的是使用 iPhone 相机拍摄一张照片,然后用其他一些照片替换部分照片......我正在考虑拍摄照片然后用低 alpha 的 UIView 覆盖它但是然后我将无法仅替换图片的某些部分。如果您能给我一些想法,我将不胜感激。
最佳答案
对于 iOS 有几个图像 API,我理解你的困惑。
首先你有 UIImage
,CocoaTouch 图像抽象。
然后你有 CGImage
,图像的 CoreGraphics 抽象。
此外,您还有 CIImage
,这是图像的 CoreImage 抽象。
这些都是不同的实体,不能以一种很好的无桥接方式一起使用。相反,您必须在不同格式之间相互转换。
通常,您最终想要的是一个可以在小部件中显示的 UIImage。您可以从 CGImage
或 CIImage
创建此图像。 CIImage
包含高级滤镜功能,例如,您可以使用适当的合成滤镜将另一幅图像放在上面。
CIImage
在任何方面都更快更好,但它在 iOS 中仍未得到完全支持。您可能还没有为 iOS 创建自己的自定义过滤器,并且只有一小部分过滤器尚待支持。
因此我建议为此目的使用CGImage
。您需要渲染到一个新的渲染上下文中,然后从该渲染上下文创建一个 UIImage。
这应该可以解决问题:
UIImage *originalImage = ...;
UIImage *frontImage = ...;
CGSize destinationSize = originalImage.frame.size;
UIGraphicsBeginImageContext(destinationSize);
[originalImage drawInRect:CGRectMake(0,0,destinationSize.width,destinationSize.height)];
[originalImage drawInRect:CGRectMake(10,10,destinationSize.width - 20,destinationSize.height - 20)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
关于ios - 更改图片背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558788/