UIGraphicsGetImageFromCurrentImageContext和drawInrect之间的连接

时间:2012-05-09 17:00:17

标签: iphone ios uikit uiimage image-resizing

我找到了以下代码来调整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%。为什么呢?

drawInRectUIGraphicsGetImageFromCurrentImageContext之间的联系是什么。在我看来,UIGraphicsGetImageFromCurrentImageContext正在覆盖当前图像,使得drawInRect的调用变得多余。

如果有人能帮助我了解详细情况,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先,因为它是视网膜屏幕,你应该将比例设置为1.0,或者它只是x2

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);

如果您调用 UIGraphicsBeginImageContext ,任何绘画工作都会导致您具体的上下文

代码中的 drawInRect 将图像绘制到上下文中,这不是多余的

或者你可以删除它,你得到一个空图像

最后,您可以从上下文中获取合并的UIImage

UIGraphicsGetImageFromCurrentImageContext();

从你所做的事情中获取一个UIImage(在上下文中)

如果你没有重新设置图像,它将不会改变任何东西

self.image = UIGraphicsGetImageFromCurrentImageContext();