1

我使用此代码调整图像大小。

- (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]; 保存它。

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

谢谢!

4

1 回答 1

2

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

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

于 2013-04-12T23:22:56.147 回答