iOS 生成缩略图等

来源:互联网 发布:覆盖cookie变量php 编辑:程序博客网 时间:2024/05/24 23:12

最近公司 项目,下载后在下载列表要展示。但是原图展示,占用内存太大,卡顿,如果不放到内存,直接读文件的话,读取速度还是很慢,滑动卡顿。

最后决定本地生成缩略图,完成展示。效果不错。

写了两个方法 都是基于CoreGraphics,在画布上完成的。代码简单,有需要的可以参考。

//1.自动缩放到指定大小+ (UIImage *)thumbnailWithImage:(UIImage *)image size:(CGSize)asize{        UIImage *newimage;        if (nil == image) {                newimage = nil;            }        else{                UIGraphicsBeginImageContext(asize);                [image drawInRect:CGRectMake(0, 0, asize.width, asize.height)];                newimage = UIGraphicsGetImageFromCurrentImageContext();                UIGraphicsEndImageContext();            }        return newimage;    }//2.保持原来的长宽比,生成一个缩略图+ (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 = asize.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 = asize.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, [[UIColor clearColor] CGColor]);                UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background                [image drawInRect:rect];                newimage = UIGraphicsGetImageFromCurrentImageContext();                UIGraphicsEndImageContext();            }        return newimage;    }


0 0