iOS 将ImageView上的控件合成一张Image

为什么写这篇文章,前几天产品提了这样的需求,扫一扫当前页面并且将扫一扫的图片截图到下一页,并附上当前时间。有人说这很好做啊,扫描成功同时拍照,然后图片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, [[UIScreen mainScreen] scale]);//图形以选项开始图像上下文
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];/**渲染属性和方法。* * /
/*将接收器及其子处理器呈现为“ctx”。这个方法
*从图层树直接渲染。在坐标空间中呈现的层。
*/
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();//*图像从当前图像上下文获取图像
    UIGraphicsEndImageContext();//结束图像上下文
    return img;
}

好了,合并成Image之后再转成NSData就可以上传自己服务器了,不会上传的图片,可以看看前几篇写的图片上传服务器。希望对大家有所帮助吧!告辞!

233.png



作者:其实你懂De
链接:https://www.jianshu.com/p/96476d59aafc
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/a18339063397/article/details/88546824
今日推荐