我找到了以下代码来调整UIImage的大小:
CGSize newSize = CGSizeMake(self.image.size.width*0.25, self.image.size.height*0.25);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[self.image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
self.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
但有一些我不明白的事情。
首先,我尝试将原始图像的大小调整为原始大小的25% - 但此方法将其大小调整为原始大小的50%。为什么呢?
drawInRect
和UIGraphicsGetImageFromCurrentImageContext
之间的联系是什么。在我看来,UIGraphicsGetImageFromCurrentImageContext
正在覆盖当前图像,使得drawInRect
的调用变得多余。
如果有人能帮助我了解详细情况,我将不胜感激。
提前致谢。
答案 0 :(得分:0)
首先,因为它是视网膜屏幕,你应该将比例设置为1.0,或者它只是x2
UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);
如果您调用 UIGraphicsBeginImageContext ,任何绘画工作都会导致您具体的上下文
代码中的 drawInRect 将图像绘制到上下文中,这不是多余的或者你可以删除它,你得到一个空图像
最后,您可以从上下文中获取合并的UIImage
UIGraphicsGetImageFromCurrentImageContext();
从你所做的事情中获取一个UIImage(在上下文中)
如果你没有重新设置图像,它将不会改变任何东西
self.image = UIGraphicsGetImageFromCurrentImageContext();