0

我找到了以下代码来调整 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变得多余。

如果有人可以帮助我详细了解正在发生的事情,我将不胜感激。

提前致谢。

4

1 回答 1

0

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

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);

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

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

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

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

UIGraphicsGetImageFromCurrentImageContext();

只需从您所做的事情中获取 UIImage(根据上下文)

如果你不设置图像回来,它不会改变任何东西

self.image = UIGraphicsGetImageFromCurrentImageContext();
于 2012-05-10T01:07:17.353 回答