把UIView转成UIImage,解决模糊失真问题
来源:互联网 发布:百度蓝天算法 编辑:程序博客网 时间:2024/05/17 05:06
最近工作中,遇到一个需求,需要把一个UIView对象转成UIImage对象显示。经过网络搜索,找到如下答案:
运行后发现,需求基本达到,但是有个问题,转换后的UIImage显示后会变模糊。因此猜测,这个方法适用于iPhone4之前的机型。iPhone4后,由于采用了Retain高清屏,在转换时需要根据屏幕密度做个处理,又到到下面的答案:
运行后,问题依旧。于是跟踪了一下contentsScale的值,发现也是1.0。这里我也不太清楚原因,本来是运行在Retain屏的设备上,为什么不是2.0。
只好自己修改成下面的样子:
变模糊和失真的问题解决了。
1
2
3
4
5
6
7
8
-(UIImage*)convertViewToImage:(UIView*)v{
CGSize s = v.bounds.size;
UIGraphicsBeginImageContext(s);
[v.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
image;
}
运行后发现,需求基本达到,但是有个问题,转换后的UIImage显示后会变模糊。因此猜测,这个方法适用于iPhone4之前的机型。iPhone4后,由于采用了Retain高清屏,在转换时需要根据屏幕密度做个处理,又到到下面的答案:
1
2
3
4
5
6
7
8
-(UIImage*)convertViewToImage:(UIView*)v{
CGSize s = v.bounds.size;
UIGraphicsBeginImageContextWithOptions(s,
NO
, v.layer.contentsScale);
[v.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
image;
}
运行后,问题依旧。于是跟踪了一下contentsScale的值,发现也是1.0。这里我也不太清楚原因,本来是运行在Retain屏的设备上,为什么不是2.0。
只好自己修改成下面的样子:
1
2
3
4
5
6
7
8
9
-(UIImage*)convertViewToImage:(UIView*)v{
CGSize s = v.bounds.size;
// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了
UIGraphicsBeginImageContextWithOptions(s,
NO
, [UIScreen mainScreen].scale);
[v.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
image;
}
变模糊和失真的问题解决了。
0 0
- 如何把UIView转成UIImage,解决模糊失真问题
- 把UIView转成UIImage,解决模糊失真问题
- 如何把UIView转成UIImage,解决模糊失真问题
- 如何把UIView转成UIImage,解决模糊失真问题
- ios UIView 转 UIImage,解决模糊失真问题
- UIImage缩放,解决模糊失真问题
- UIView转成UIImage
- IOS 将UIView转成UIImage
- IOS-61-解决UIImage在压缩时失真问题
- 将UIView转成UIImage,将UIImage转成PNG/JPG
- 将UIView转成UIImage,将UIImage转成PNG/JPG
- 解决UIImage在压缩时失真问题,压缩图片的大小
- 把字符串转成uiimage 经典代码
- 解决 UIView 设置背景为UIImage图片变型问题[XXX setBackgroundColor:
- VC 解决图片失真问题
- VC解决stretchblt 失真问题
- SetSTretchBltMode解决图像失真问题
- 解决StretchBlt()图像失真问题
- HDOJ-1576(数论)
- WIN 2008执行任务时所产生的代码所包含的意思。(部分)
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
- C# Regex 类
- Windows Server 2008 R2域控时间同步internet时间
- 把UIView转成UIImage,解决模糊失真问题
- 最少拦截系统 SDUToj 2075
- Scala练习(三)
- 关于cocos2dx 3.x自适配屏幕
- android 百度地图 定位功能
- 基于android eclipse的JNI 构建-常用命令笔记
- postgis安装
- 人类科技有望实现手机充一次电用一年神迹
- ORACLE数据迁移