2012-07-08 8 views
8

"最近隣"リサンプリングを使用してPhotoshopのようにUIImageのサイズを変更する方法が必要です。私はいくつかを探していましたが、私が見つけたものは、バイキュービックのリサンプリング品質を改善するためにCoreGraphicsの厚さについてでした。私は自分のアプリでピクセルスタイルのデザインをしていて、ピクセルで作成してx5の乗数で拡大するものがたくさんあります(それに多くの時間がかかるので、Photoshop用のスクリプトを書くことにも近い)。たとえば、次のようにUIImageはハードエッジでサイズを変更します

enter image description here>enter image description here

しかし、私は実際にリサンプリングのこのような結果は必要ありません:たぶん、誰もが私の正しい方法が表示されます

enter image description here

を。あなたはグラフィックスコンテキストにあなたのイメージを描画するとき

+0

さらに、私は、Photoshopの「アクション」を使ってバッチ画像処理を行うための良い方法を見つけたと言えるでしょう。しかし、私はまだ格納されたリソースイメージのサイズを減らすために答えが必要です。 – kokoko

答えて

16

、あなたはこのような(例えば、ビューのdrawRect方法で)、グラフィックスコンテキストの補間品質を「なし」に設定することができます。

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetInterpolationQuality(c, kCGInterpolationNone); 
UIImage *image = [UIImage imageNamed:@"pixels.png"]; 
[image drawInRect:self.bounds]; 

あなたは結果が必要な場合UIImageとして(例えば、組み込みのUIコントロールに割り当てるため)、UIGraphicsBeginImageContextでこれを行うことができます(その例はたくさんあります)。

代替は、画像ビューの層のmagnificationFilterプロパティを設定することです:あなたがイメージを再描画する必要がないため

pixelatedImageView.layer.magnificationFilter = kCAFilterNearest; 

これは、おそらく、より速く、よりメモリ効率です。

+0

この回答はよさそうだ、私はすぐに受け入れるためにXCodeでそれをチェックする必要があります。ありがとう。 – kokoko

関連する問題