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

最初に、これは Retina スクリーンなので、スケールを 1.0 に設定するか、単に x2 に設定する必要があります

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);

UIGraphicsBeginImageContextを呼び出すと、ペイント作業は指定したコンテキストになります

コード内のdrawInRectは画像をコンテキストに描画しますが、冗長ではありません

または削除することができます。空の画像が得られます

最後に、コンテキストからマージされた UIImage を取得できます

UIGraphicsGetImageFromCurrentImageContext();

あなたがしたことからUIImageを取得するだけです(コンテキストで)

画像を元に戻さないと、何も変わりません

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