ios - 更改图片背景图片

标签 ios uiview uiimage overlay

我想要实现的是使用 iPhone 相机拍摄一张照片,然后用其他一些照片替换部分照片......我正在考虑拍摄照片然后用低 alpha 的 UIView 覆盖它但是然后我将无法仅替换图片的某些部分。如果您能给我一些想法,我将不胜感激。

最佳答案

对于 iOS 有几个图像 API,我理解你的困惑。 首先你有 UIImage,CocoaTouch 图像抽象。 然后你有 CGImage,图像的 CoreGraphics 抽象。 此外,您还有 CIImage,这是图像的 CoreImage 抽象。

这些都是不同的实体,不能以一种很好的无桥接方式一起使用。相反,您必须在不同格式之间相互转换。

通常,您最终想要的是一个可以在小部件中显示的 UIImage。您可以从 CGImageCIImage 创建此图像。 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/

相关文章:

ios - 如何控制UIView动画重复周期?

ios - 如何在 Swift 中更改 UIImage 的颜色

ios - 将其剪辑成圆形后质量低的 UIImage

ios - 无法在 UILabel 中设置自定义字体(iPad 应用程序)

ios - 我在 UITableView 中添加了一个 View ,并且该 View 和第一个单元格之间存在间隙。我怎样才能删除它?

iphone - UIView使用 block 动画方法滑入但不滑出动画

objective-c - MKOverlayRenderer 在 map View 上显示 UIImage

ios - 使用 FCM 的 Flutter 推送通知不适用于 iOS

ios - 使用 CocoaPods 有什么好处?

ios - ScrollView 中的一种方式分页