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 に答える