如何把UIView转成UIImage,解决模糊失真问题
来源:互联网 发布:淘宝优惠券招代理 编辑:程序博客网 时间:2024/05/16 18:32
最近工作中,遇到一个需求,需要把一个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()图像失真问题
- JdbcRowMapper-JDBC泛型查询对象封装
- acl 库下载信息
- 网络流二十四题之十六 —— 数字梯形问题(DIGIT)
- 内网FTPpassword嗅探
- ajax跨域解决办法
- 如何把UIView转成UIImage,解决模糊失真问题
- 类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函 无法嵌入互操作类型“Microsoft.Office.Interop.Word.App
- jQuery scrollFix滚动定位插件
- Python 进阶 —— 函数式编程
- Leetcode 75. Sort Colors 色彩排序 解题报告
- 移植uboot-1.1.6到勤研2440
- java 线程池
- 带下划线的EditText
- Diango怎么将数据库中的表同步到moudle中