UIImage缩放后再次启动App 图片显示异常

问题描述

做一个App发送图片的功能,需要展示图片的缩略图,所以从网上寻找了重绘UIImage的方法:

代码来源:

http://www.cnblogs.com/robinkey/archive/2013/01/18/2770361.html


- (UIImage *)TelescopicImageToSize:(CGSize) size

{

    UIGraphicsBeginImageContext(size);

    [self drawInRect:CGRectMake(0, 0, size.width, size.height)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;

}

第一次运行正常, 成功将相册中得图片缩放到了80*80的大小 展示出来也是这么大,于是进行了本地储存操作,但是当我第二次打开程序的时候,惊奇的发现 图片大小变成了40*40. 其中并没有对图片的大小进行操作,最后看到一篇文章才得到启发:
http://www.cnblogs.com/smileEvday/archive/2013/05/14/UIImage.html
其中有一句话这么说得:

先想一个问题“一个图像的尺寸到底是多大呢?”

  第一反应可能就是image.size,恭喜你答错了,正确的答案是图像的实际的尺寸(像素)等于image.size乘以image.scale

原来我忽略了image得scale属性,图片缩小后 默认的scale是1.0,不论是几倍的屏幕,而下次从本地加载UIImage的data数据时,系统默认的scale是设备的scale,所以本来是80*80的一倍图像,下次加载的时候scale变成了2.0,于是就出现了图片变小的结果. 下面是我修改了缩略图方法的代码:

//根据新的大小重新绘制Image
- (UIImage *)TelescopicImageToSize:(CGSize)size image:(UIImage *)image

{

    UIGraphicsBeginImageContext(size);

    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    //缩小后的一倍图
    UIImage *sizeImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();
    //将图片的scale属性改成设备的scale
    UIImage * newImage = [[UIImage alloc] initWithCGImage:sizeImage.CGImage scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
    return newImage;

}

这样 图片就不会变小了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值