根據尺寸
//根據指定尺寸縮放圖片
-(UIImage *)imageCompressWithSize:(CGSize)size
{
**// UIGraphicsBeginImageContext(size); ///<用這個失真**
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); ///<用這個不失真
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
之前用模擬器跑是沒有問題,但是在真機運行時用這個方法縮小的圖片過於模糊,最後發現使用UIGraphicsBeginImageContext(size);方法會造成失真,換成UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); 就可以
根據比例縮放
//根據指定比例縮放圖片
-(UIImage *)imageCompressWithScale:(CGFloat)scale
{
CGSize size = self.size;
CGFloat width = size.width;
CGFloat height = size.height;
CGFloat scaleWidth = width*scale;
CGFloat scaleHeight = height*scale;
UIGraphicsBeginImageContextWithOptions(CGSizeMake(scaleWidth, scaleHeight), NO, 0.0); ///<用這個不失真
[self drawInRect:CGRectMake(0, 0, scaleWidth, scaleHeight)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}