OC - 网络图片压缩,获取网络图片尺寸

在项目开发中,我们很多时候,需要在原有图片的基础上,将图片进行压缩。而大多数时候,我们都是在接口方直接获取的图片链接。而此篇,就是为了解决,将压缩网络图片,进而展示在UI上

首先,将接口获取的图片,转成NSData  :  

NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"网络图片地址"]];     

将data抓成UIImage:

UIImage *image = [UIImageimageWithData:data];

压缩图片操作:

参数image 当前需要压缩的图片

参数 size 需要压缩到的尺寸

- (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize
{
    UIImage *newimage;
    if (nil == image)
    {
        newimage = nil;
    }
    else
    {
        CGSize oldsize = image.size;
        CGRect rect;
        if (asize.width/asize.height > oldsize.width/oldsize.height)
        {
            rect.size.width = size.height* oldsize.width/ oldsize.height;    
            rect.size.height = asize.height;
            rect.origin.x = (asize.width - rect.size.width) / 2;
            rect.origin.y =0;
        }
        else
        {
            rect.size.width = asize.width;
            rect.size.height = size.width* oldsize.height/ oldsize.width;
            rect.origin.x =0;
            rect.origin.y = (asize.height - rect.size.height) / 2;
        }
        UIGraphicsBeginImageContext(asize);
        CGContextRef context =UIGraphicsGetCurrentContext();
        CGContextSetFillColorWithColor(context, [[UIColorclearColor]CGColor]);
        UIRectFill(CGRectMake(0,0, asize.width, asize.height));
        [image drawInRect:rect];
        newimage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    return newimage;
}

调用压缩图片:

UIImage *compress = [self thumbnailWithImageWithoutScale:image size:CGSizeMake(200,200)];

到此为止,压缩网络图片操作完成。 注意:上述操作,要在子线程中进行,否则会卡主线程

 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值