2012-07-08 31 views
8

"En yakın komşu" yeniden örnekleme ile photoshop'ta olduğu gibi UIImage'ı yeniden boyutlandırmak için bir yönteme ihtiyacım var. Bazıları arıyordum, ama bulduğum her şey, bicubic örnekleme kalitesini iyileştirmek için CoreGraphics'le ilgili. Uygulamamda piksel stili bir tasarıma ve pikselle oluşturduğum bir çok öğeye sahibim ve ardından x5 çarpanıyla büyütüyorum (ve çok fazla zaman alıyor, bu yüzden Photoshop için bir komut dosyası yazmak bile gerekiyor). Örneğin:UIImage sabit kenarlarla yeniden boyutlandırma

enter image description here

Belki kimse bana doğru yolu gösterecektir:

enter image description here>enter image description here

Ama gerçekten yeniden örnekleme ait böyle bir sonuç gerekmez. Eğer bir grafik bağlamında halinde görüntü çizerken

+0

Ek olarak, photoshop "actions" ile toplu görüntü işleme için iyi bir yol bulduğumu söyleyebilirim. Ama saklı kaynak görüntülerinin boyutunu azaltmak için hala bir cevaba ihtiyacım var. – kokoko

cevap

16

, böyle (örneğin bir görünümün drawRect yönteminde), grafik bağlamda en interpolasyon kalitesini "none" olarak ayarlayabilirsiniz:

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

Eğer sonuç gerekiyorsa UIImage (örn., yerleşik bir UI denetimine atamak için), bunu UIGraphicsBeginImageContext ile yapabilirsiniz (bunun için çok sayıda örnek bulabilirsiniz).

alternatif bir görüntü görünümün tabakasının magnificationFilter özelliğini ayarlamak olacaktır: Eğer görüntüyü yeniden çizmek gerekmez çünkü

pixelatedImageView.layer.magnificationFilter = kCAFilterNearest; 

Bu, muhtemelen daha hızlı ve daha bellek verimlidir.

+0

Bu cevap güzel görünüyor, kabul etmek için yakında XCode'da kontrol etmeliyim. Teşekkürler. – kokoko

İlgili konular