iOS 将ImageView上的控件合成一张Image
2018.07.06 12:11* 字数 221 阅读 736评论 0喜欢 0
为什么写这篇文章,前几天产品提了这样的需求,扫一扫当前页面并且将扫一扫的图片截图到下一页,并附上当前时间。有人说这很好做啊,扫描成功同时拍照,然后图片UIImageView上放上UILable控件不就可以吗?是的想法是对的,但是需要将UIImageView和UILabel两个控件合成一张UIImage ,这样才能以二进制文件流格式传给后台,这才是关键。扫一扫和拍照时进行,这些功能都是大家比较常见的功能,我就不附代码了。
首先看下app端的效果(扫一扫之后的部分页面)
6D609BD9-F92C-4AFB-AF21-C7D00F25488E.png
这是怎么写的大家都知道了,没什么可说的。关键的时候到了,我们请求到的图片也要和现在一样就是把当前时间也需要传上去,也就是在网页访问图片也是这种效果:
5EE7CBC1-B274-4EA2-B85D-4AF78A51D419.png
是的就这种效果,这时候也就是前边提到的,要将ImageView上的控件都变成Image这样我们就可以传给后台了。代码不多。
//将ImageView上的控件合成image用于服务器上传//这个方法就是讲ImageView控件画在上面(自己的理解,不懂的可以去看看API)
- (UIImage*)imageWithView:(UIImageView*)view{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, [[UIScreenmainScreen] scale]);//图形以选项开始图像上下文
[view.layer renderInContext:UIGraphicsGetCurrentContext()];/**渲染属性和方法。* * /
/*将接收器及其子处理器呈现为“ctx”。这个方法
*从图层树直接渲染。在坐标空间中呈现的层。
*/
UIImage* img =UIGraphicsGetImageFromCurrentImageContext();//*图像从当前图像上下文获取图像
UIGraphicsEndImageContext();//结束图像上下文returnimg;
}
好了,合并成Image之后再转成NSData就可以上传自己服务器了,不会上传的图片,可以看看前几篇写的图片上传服务器。希望对大家有所帮助吧!告辞!
网友评论