objective-c - iOS - 合并两个不同大小的图像

标签 objective-c ios cocoa-touch merge uiimage

我面临以下问题:我必须合并两张图像 A 和 B 以创建新图像 C 作为合并的结果。
我已经知道如何合并两个图像,但在这种情况下,我的目标有点不同。
我希望图像 A 将作为图像 B 的背景。
例如,如果图像 A 的大小为 500x500,图像 B 的大小为 460x460,我希望图像 C(合并后的图像结果)为 500x500,图像 B (460x460) 居中。

在此先感谢您的任何帮助或建议

最佳答案

这是我在我的应用中所做的,但没有使用 UIImageView:

UIImage *bottomImage = [UIImage imageNamed:@"bottom.png"]; //background image
UIImage *image       = [UIImage imageNamed:@"top.png"]; //foreground image

CGSize newSize = CGSizeMake(width, height);
UIGraphicsBeginImageContext( newSize );

// Use existing opacity as is
[bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

// Apply supplied opacity if applicable
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

如果图像已经有不透明度,则不需要设置它(如 bottomImage),否则你可以设置它(如图像)。

创建此 UIImage 后,您可以将其嵌入到您的 UIImageView

更新:感谢 Ahmet AkkoK - 对于 Swift (2.2) 用户,混合模式宏已更改。 CGBlendMode .kCGBlendModeNormal 替换为 CGBlendMode.Normal

关于objective-c - iOS - 合并两个不同大小的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208951/

相关文章:

iOS 序列化/反序列化无法正常工作

objective-c - 如何在 Objective-C 中保持输出流打开?

iphone - CIFaceFeature trackingID 对于多张面孔总是相同的

ios - 在 react 管道中删除嵌套的 subscribeNext

ios - 如何在 iOS 中从用户那里获取当前位置

ios - 通过 UISegmentControl 将数据传递给 childViewControllers

ios - "Signing identity"和 "certificate"之间的区别?

iphone - 在没有私有(private) API 的情况下实现自定义 UITabBarController

iphone - 通过将导航栏设置为通过推送/弹出隐藏来查看大小

ios - 根据一组有序字符串对 NSStrings 的 NSArray 进行排序