UIImage 使用纵横比调整大小 ->保存 JPG ->加载 ->加载的图像放大两倍



我正在使用这个代码来调整图像的大小。

- (UIImage*)resizeToSize:(CGSize)size {
float height    = self.size.height;
float width     = self.size.width;

if (width > size.width) {
    width   = size.width;
    height  = size.width / (self.size.width / self.size.height);
}
if (height > size.height) {
    height  = size.height;
    width   = size.height / (self.size.height / self.size.width);
}
NSLog(@"Resize to size %@",NSStringFromCGSize(size));
if (height == self.size.height && width == self.size.width) {
    return self;
}    
CGSize newSize = CGSizeMake(width, height);
UIGraphicsBeginImageContextWithOptions(newSize, YES, 0.0);
[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"Resized %@",NSStringFromCGSize(newImage.size));
return newImage;
}

图像被调整大小,在下一步我保存它通过[UIImageJPEGRepresentation(image, 1.0) writeToFile:pngPath atomically:YES];;

之后,我加载文件,图像大小是原来的两倍,有没有提示为什么?

谢谢!

我怀疑这里发生的事情是你有一个scale 2.0的图像(在Retina设备上),但你在文件名中保存它而没有@2x,所以当你重新打开它时,它是一个scale 1.0图像,尺寸是你想要的两倍。

如果是这种情况,有两个解决方案:您可以修复您的文件名,或者您可以通过将文件读入NSData对象重新打开文件,然后使用UIImage +imageWithData:scale:获得适当缩放的图像。

最新更新