零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods
一.UIImage 合并多张图片
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:Object-C UIImage 合并多张图片
//@Time:2021/10/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/
#pragma mark - 合并 UIImage
/**
* return 合成后的图片 (以坐标为参考点,准确)
* @param mainImage 第一张图片位画布 (必传,不可空)
* @param viewFrame 第一张图片所在View的frame(获取压缩比用) (必传,不可空)
* @param imgArray 子图片数组 (必传,不可空)
* @param frameArray 子图片坐标数组 (必传,不可空)
*/
-(UIImage *)mergeImageOnMainImage:(UIImage *)mainImage
mainImageViewFrame:(CGRect)viewFrame
subImageArray:(NSArray *)imgArray
subImageFrameArray:(NSArray *)frameArray {
if (!mainImage) { return nil; }
if (viewFrame.size.width == 0 || viewFrame.size.height == 0) { return nil; }
if (imgArray.count == 0) { return nil; }
if (imgArray.count != frameArray.count) { return nil; }
// 此处拿到缩放比例
CGFloat widthScale = mainImage.size.width / viewFrame.size.width;
CGFloat heightScale = mainImage.size.height / viewFrame.size.height;
UIGraphicsBeginImageContext(CGSizeMake(mainImage.size.width, mainImage.size.height));
[mainImage drawInRect:CGRectMake(0, 0, mainImage.size.width, mainImage.size.height)];
int i = 0;
for (UIImage *img in imgArray) {
CGRect fristRect = [[frameArray objectAtIndex:i] CGRectValue];
[img drawInRect:CGRectMake(fristRect.origin.x * widthScale, fristRect.origin.y * heightScale, fristRect.size.width, fristRect.size.height)];
i+=1;
}
UIImage *resultImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImg == nil ? mainImage : resultImg;
}
- (void)viewDidLoad {
[super viewDidLoad];
//底图
UIImage* mainImage = [UIImage imageNamed:@"123.png"];
CGRect mainRect = CGRectMake(0, 0, mainImage.size.width, mainImage.size.height);
//需要合并的图片
NSMutableArray* subImages = [[NSMutableArray alloc] init];
UIImage* subImage = [UIImage imageNamed:@"456.png"];
[subImages addObject:subImage];
//设置合并图片的显示位置
NSMutableArray* subImageRects = [[NSMutableArray alloc] init];
CGRect rt = CGRectMake(0, 0, subImage.size.height/2.0, subImage.size.height/2.0);
[subImageRects addObject:[NSValue valueWithCGRect:rt]];
UIImage* dstImage = [self mergeImageOnMainImage:mainImage mainImageViewFrame:mainRect subImageArray:subImages subImageFrameArray:subImageRects];
}
原图:
合并后:
二.猜你喜欢
- iOS NSString 拆分字符串
- iOS NSString 截取字符串
- iOS NSString 和 NSArray 相互转换
- iOS NSString 包含字符串/匹配字符串
- iOS NSURL URLWithString 与 fileURLWithPath 区别
- iOS NSURL 与 NSString相互转换
- iOS NSString 获取中文字符串长度
- iOS NSString 判断字符串是否为空判
- iOS NSString 获取指定下标字符
- iOS NSString 匹配字符串开头
- iOS NSString 匹配字符串结尾
- iOS NSString 判断两个字符串是否相等
- iOS NSString 将字符串中的字母转换为大写
- iOS NSString 将字符串中的字母转换为小写
- iOS NSString 将字符串中的首字母变为大写
- iOS NSString 拼接字符串
- iOS NSString 插入字符串
- iOS NSString 删除字符串
- iOS NSNumber 和 int 相互转换
- iOS NSNumber compare 比较
- iOS NSNumber isEqualToNumber
- iOS NSValue 和 CGPoint 相互转换
- iOS NSValue 和 CGSize 相互转换
- iOS UIImage 与 RGBA 相互转换
- Object-C UIImage 缩放
- Object-C UIImage 裁剪
- Object-C UIImage 旋转
- Object-C UIImage 合并多张图片
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容