我正在使用这个代码来调整图像的大小。
- (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:
获得适当缩放的图像。