2015-07-09 44 views
0

我見過很多例子,其中有一些新的UIImage通過輸入UIImage進行修改。它看起來像:在UIGraphicsContext中修改原始UIImage

- (UIImage *)imageByDrawingCircleOnImage:(UIImage *)image 
{ 
    // begin a graphics context of sufficient size 
    UIGraphicsBeginImageContext(image.size); 

    // draw original image into the context 
    [image drawAtPoint:CGPointZero]; 

    // get the context for CoreGraphics 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 

    // draw there 

我有類似的問題,但我真的想修改輸入圖像。我想這會更快,因爲我不會每次都繪製原始圖像。但我找不到任何樣品。我如何獲得原始圖像的圖像上下文,它已經繪製出來了?

回答

1

UIImage由於多種原因(大多數是圍繞性能和內存)是不可變的。如果你想弄亂它,你必須複製一份。

如果你想要一個可變圖像,只需將其繪製到上下文中,並繼續使用該上下文。您可以使用CGBitmapContextCreate創建自己的上下文。

這就是說,不要在這裏猜測系統太多。 UIImage和Core Graphics在它們中進行了很多優化,並且有一個原因可以讓您看到許多複製圖像的示例。不要「假設它會工作得更快。」你真的必須在你的程序中進行配置。