1
// This is the line which retrieves the current image on the UIView
CGImageRef originalImage = imageView.image.CGImage;

我在一种用于编辑图像的方法中声明了这一点,该方法可以由多个按钮调用。

无论如何我可以全局声明这个变量,所以它总是保存在 UIView 中加载的第一个图像?然后我可以使用一个复制变量来做所有的编辑,例如

CGImageRef copyImage = originalImage;

我试图通过在头文件中声明它并在方法文件中实例化它来使其成为全局变量,但是当我尝试在另一种方法中访问全局变量时,就好像它没有成为全局变量一样。

任何建议或更好的解决方案将不胜感激。

4

1 回答 1

0

目前尚不完全清楚您要做什么,但我要指出的是:

  1. 那作业

              CGImageRef copyImage = originalImage;
    

    不会创建您的图像的副本;它只会给你一个指向相同图像的局部变量originalImage;如果你修改copyImage,你也修改originalImage

  2. 如果您想制作 CGImage 的副本,以便您可以在保持原始安全的同时自由修改它,请使用:

          CGImageRef img1 = CGImageCreateCopy(img2);
    
  3. 如果您想将原始图像保存为第 2 点,只需在您的类中添加一个属性并在 CGImage 到位后立即对其进行初始化(例如,在viewDidLoad

           -(void) viewDidLoad {
               ...
               self.originalImage = CGImageCreateCopy(imageView.image.CGImage);
               ...
           }
    

self.originalImage将是您的原始图像,同时您将能够自由修改imageView.image.CGImage.

不要忘记在你的 dealloc 方法中释放复制的图像。

希望这可以帮助。

于 2012-09-13T09:01:39.143 回答