iOS 两张图片合并成一张。
(一)
UIImage * icon = self.groupIconView.image;//[UIImage imageNamed:@""];
//以1.png的图大小为底图
//CGImageRef imgRef = icon.CGImage;
// CGFloat w = CGImageGetWidth(imgRef);
//CGFloat h = CGImageGetHeight(imgRef);
UIImage *img1 = [UIImage imageNamed:@"bg_"];
// CGImageRef imgRef1 = img1.CGImage;
//CGFloat w1 = CGImageGetWidth(imgRef1);
//CGFloat h1 = CGImageGetHeight(imgRef1);
//以1.png的图大小为画布创建上下文
UIGraphicsBeginImageContext(CGSizeMake(100, 100));
[img1 drawInRect:CGRectMake(0, 0, 100, 100)];//先把1.png 画到上下文中
[icon drawInRect:CGRectMake(4, 4, 92, 92)];//再把小图放在上下文中
UIImage *resultImg = UIGraphicsGetImageFromCurrentImageContext();//从当前上下文中获得最终图片
UIGraphicsEndImageContext();//关闭上下文
// CGImageRelease(imgRef);
// CGImageRelease(imgRef1);
icon = resultImg;
应用场景 二维码中间的图标加边框 等等:
// 生成带图片的二维码
[UIImage qrImageWithString:content size:myWidth * qrScale iconImage:icon scale: margin/(myWidth * qrScale) completion:^(UIImage *image) {
weakSelf.qrImageView.image = image;
}
#pragma mark - 带图片二维码(图片指定比例、方形)
+ (void)qrImageWithString:(NSString *)string size:(CGFloat)size iconImage:(UIImage *)iconImage scale:(CGFloat)scale completion:(void (^)(UIImage * image))completion {
// 传入 CenterImgType_Square scale
[UIImage qrImageWithString:string size:size CenterImageType:CenterImgType_CornorRadious iconImage:iconImage scale:scale completion:completion];//CenterImgType_Square 方形 CenterImgType_CornorRadious 切圆角
}
(二)
如果内置小图片要求为圆角,则需要绘图
//绘图圆角
CGRect rect = (CGRect){0.f, 0.f, icon.size};
UIGraphicsBeginImageContextWithOptions(icon.size, NO, UIScreen.mainScreen.scale);
CGContextAddPath(UIGraphicsGetCurrentContext(),
[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:8].CGPath);
CGContextClip(UIGraphicsGetCurrentContext());
[icon drawInRect:rect];
UIImage *output = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
关于绘制这块,系统已经提供了几个内置的方法:
+ (instancetype)bezierPathWithRect:(CGRect)rect;
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;
今天就简单的介绍一下这几个方法
1:画矩形
- (instancetype)bezierPathWithRect:(CGRect)rect;
系统方法,画矩形
rect: 矩形的Frame
- (void)drawRect:(CGRect)rect
{// 设置线的填充色[[UIColor redColor] setStroke];// 新建一个bezier对象,此对象用于绘制矩形,需要传入绘制的矩形的FrameUIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(10, 10, 280, 280)];// 设置线宽度bezierPath.lineWidth = 10;// 设置线两头样式bezierPath.lineCapStyle = kCGLineCapRound;// 开始绘制[bezierPath stroke];
}
![](http://upload-images.jianshu.io/upload_images/761142-292a64fce7e10d7b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2:画矩形,圆角矩形
- (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius
系统方法,绘制一个圆角的矩形
rect: 矩形的Frame
cornerRadius: 圆角的半径
- (void)drawRect:(CGRect)rect
{// 设置线的填充色[[UIColor redColor] setStroke];// 新建一个bezier对象,此对象用于绘制一个圆角矩形UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 280, 280)cornerRadius:30];// 设置线宽度bezierPath.lineWidth = 10;// 开始绘制[bezierPath stroke];
}
![](http://upload-images.jianshu.io/upload_images/761142-b6114189ea0f4aae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3:画矩形,部分圆角的矩形
- (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
画一个部分圆角的矩形
rect: 需要画的矩形的Frame
corners: 哪些部位需要画成圆角
cornerRadii: 圆角的Size
- (void)drawRect:(CGRect)rect
{// 设置线的填充色[[UIColor redColor] setStroke];// 新建一个bezier对象,此对象用于绘制一个部分圆角的矩形,左上、右下UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 280, 280)byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRightcornerRadii:CGSizeMake(10, 10)];// 设置线宽度bezierPath.lineWidth = 10;// 开始绘制[bezierPath stroke];
}
![](http://upload-images.jianshu.io/upload_images/761142-ee265f0ece1b3503.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4:画圆,内切圆
- (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
画圆,这个方法绘制的是一个矩形的内切圆
rect: 矩形的Frame
- (void)drawRect:(CGRect)rect
{// 设置线的填充色[[UIColor redColor] setStroke];// 新建一个bezier对象,此对象用于绘制内切圆,需要传入绘制内切圆的矩形的FrameUIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 280, 280)];// 设置线宽度bezierPath.lineWidth = 10;// 设置线两头样式bezierPath.lineCapStyle = kCGLineCapRound;// 开始绘制[bezierPath stroke];
}
![](http://upload-images.jianshu.io/upload_images/761142-94ebe8483ed5c8f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5:画圆弧
- (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
center: 圆心坐标
radius: 圆的半径
startAngle: 绘制起始点角度
endAngle: 绘制终点角度
clockwise: 是否顺时针
- (void)drawRect:(CGRect)rect
{// 设置线的填充色[[UIColor redColor] setStroke];// 新建一个bezier对象,此对象用于绘制一个圆弧UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)radius:110startAngle:0endAngle:M_PI_2clockwise:NO];// 设置线宽度bezierPath.lineWidth = 10;// 开始绘制[bezierPath stroke];
}
![](http://upload-images.jianshu.io/upload_images/761142-7c3d77d79c8f825b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
iOS 两张图片合并成一张。相关推荐
- PIL实现两张图片合成一张,和图片加文字
PIL实现两张图片合成一张,和图片加文字 文章目录: 一.PIL实现两张图片合成一张 1.方法一: 2.方法二 二.图片添加文字 首先说明一下: (小姐姐是谁,是my sweetheart ,请勿使用 ...
- 什么相片可以两张弄成一张_ps怎么把两张图片合成一张
ps怎么把两张图片合成一张 图片应用在我们的生活中十分广泛,Photoshop似乎已经离不开我们的生活.点点滴滴回忆刻印成一张张图片.不过有不少网友却不知道ps怎么把两张图片合成一张,下文将一一为大家 ...
- 如何将两张图片合成一张pdf
在职场工作中,学会处理PDF文件是必不可少的技能.由于PDF文档的特殊性,许多新手在编辑PDF文件时往往不知道从何入手.比如一些非pdf格式的文件,像图片,在使用的时候被指定必须使用pdf格式的,这个 ...
- android 两张电信_两张图片合成一张app-2张图片合成一张app下载1.2.9 官方安卓版-西西软件下载...
两张图片合成一张app是一款可以把手机上的2张图片合成一张并且看不出是合成的图片的工具,玩转2张图片叠加,可以让你和偶像合照不是梦很逼真的!带你打造与众不同的作品!可以制作双重曝光效果的APP,带你打 ...
- Windows10 把两张图片合并成一张图片
Windows10把两张图片合并成一张图片 文章目录 Windows10把两张图片合并成一张图片 1. 背景 2. "画图"实现多图拼接 1. 背景 相比截图功能,在 Google ...
- 什么相片可以两张弄成一张_怎么将两张图片合成一张?
有时候我们需要将两张图片放在一起相比较,但是两张图片相互切换对比起来比较困难,有没有什么办法将两张图片合成一张?方法是肯定有的,而且还是多种多样的,本文就给大家介绍一种对普通用户来说最简单方便快捷的方 ...
- 【Opencv】Python+openCV实现全景图拼接(左右两张图片拼接成一张全景图)
Python+openCV实现全景图拼接(左右两张图片拼接成一张全景图) 全景图拼接 思路 具体步骤 代码与结果 代码 效果测试1 效果测试2 全景图拼接 思路 这个就是简单对左右两张图进行拼接,希望 ...
- chatgpt赋能python:Python将两张图片拼接成一张图:让您的图片处理更高效!
Python将两张图片拼接成一张图:让您的图片处理更高效! 作为一个有着10年Python编程经验的工程师,我发现Python成为了许多项目的主要语言,其中涵盖了很多关于图像处理的应用程序.在本文中, ...
- OpenCV将两图片进行混合,达到两张图片合并成一张图片的效果
1.概述 案例:将两张图片混合成一张图片,并且原图的元素要保留到同一张图片中. 2.示例图片 2.1.混合后的图片 2.2.原始的两张图片 3.示例代码 //将两张图片进行混合 #include &l ...
- 使用canvas来实现两张图片合成一张
写在开头: 最近遇到一个需求,就是上传一张图片,原来的图片作为底图,两张图片组合在一起,形成一张新的图片.并能点击另存. 网上各种百度,谷歌.有很多方法.然后在我的需求里面都不是很适用.就结合前人的成 ...
最新文章
- 胜者树和败者树 - qianye0905 - 博客园
- Redis RDB 持久化详解
- Linux 内核超时导致虚拟机无法正常启动
- Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
- Spring data elasticsearch的使用
- 5G NR RLC:PDU Parameters
- 构建Java Web开发环境
- IDEA常用快捷键大全
- Bootstrap 基础五表格
- python中质数的表达方式_python求质数的3种方法
- 总线、设备和驱动的关系
- python各种源码下载
- 程序员下班为什么不关电脑?
- mysql gh 划线,gh-ost:在线DDL修改MySQL表结构工具
- 全球及中国暗箱针孔相机行业竞争格局及十四五投资规划建议报告2021-2027年版
- 高通平台开发系列讲解(外设篇)DSI分屏
- SQL中变量赋初始值的重要性
- ArcMap中构建金字塔详解
- 黑客利用瑞昱声卡设计缺陷监听你?
- 儿童益智类型电子产品玩具需要什么认证?
热门文章
- 关于打卡值班制度---一个excel开发工具小函数
- 数据科学家:大器晚成,是软件工程师成功的唯一捷径
- linux基础-命令
- logstash grok mysql_logstash grok
- 软件测试 | 期末复习——软件质量概述
- 带省略号的比喻句_标点符号往往能引发人们的联想,例如:“省略号像一条漫长的人生道路,等着你去书写它留下的空白。”请以一种标点符号(省略号除外)为描述对象,写一个比喻句,形象地阐发某种生活道理。...
- 百度EasyDL实体抽取和关系抽取
- shim是什么?Vue响应式原理
- ACM模板-f_zyj.pdf
- 2021年中国资产管理业务总体存量及促进资产管理行业健康发展的对策分析[图]