iOS 生成缩略图 -image i/o

/**
 利用Image i/o

 @param data 图片data
 @param size UIImageView尺寸
 @param scale 压缩比 0-1放大 拉伸 =1 原图,<1 压缩 //s饰演的结果是这个参数,并不能改变图片的大小
 @param orientation 方向 //这个参数可以方便我们对图片作出旋转比如上-》下,镜像;
 @return 缩略图
 */
-(UIImage *)seacalImageWithData:(NSData *)data withSize:(CGSize)size scale:(CGFloat)scale orientation:(UIImageOrientation)orientation{
    CGFloat maxPixeSize = MAX(size.width, size.height);
    //读取图像源
    CGImageSourceRef sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef)data, nil);
    NSDictionary *options = @{(__bridge id)kCGImageSourceCreateThumbnailFromImageAlways:(__bridge id)kCFBooleanTrue,(__bridge id)kCGImageSourceThumbnailMaxPixelSize:[NSNumber numberWithFloat:maxPixeSize]};
    //创建缩略图,根据字典
    /*
     options中的
     kCGImageSourceThumbnailMaxPixelSize 指定缩略图的最大宽度和高度(以像素为单位)。如果此键未指定,缩略图的宽度和高度为不受限制,缩略图可能和图片本身一样大。如果指定,此键的值必须是CFNumberRef。* /
     kCGImageSourceCreateThumbnailFromImageAlways *如果图像源文件中存在缩略图。缩略图将由完整图像创建,受kCGImageSourceThumbnailMaxPixelSize——如果没有最大像素大小指定,则缩略图将为完整图像的大小,可能不是你想要的。这个键的值必须是CFBooleanRef;这个键的默认值是kCFBooleanFalse。
     
     */
    CGImageRef imageRef = CGImageSourceCreateThumbnailAtIndex(sourceRef, 0, (__bridge CFDictionaryRef)options);
    UIImage *resultImage = [UIImage imageWithCGImage:imageRef scale:scale orientation:orientation];
    return resultImage;
    
}

使用ImageI/O好处是:避免在改变图片大小的过程中产生临时的bitmap(栅格图),就能够在很大程度上减少内存的占有。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值