2009-07-28 23 views
12

Üzerinde çalışıyorum küçük bir IPhone uygulaması var ve bir UIImageView ile bir görüntü görüntülüyorum. Aspect Fit modunu kullanarak ölçeklendiriyorum. Görüntü ölçeklendirmesini hiçbir enterpolasyon/pürüzsüzleştirme olmaksızın yapmak istiyorum (pikselli görünmesini istiyorum). Bu davranışı değiştirebileceğim bir yol var mı?UIImageView ölçekleme/enterpolasyon

Kendi ölçekleme algoritmamı uygulayabilir miyim, yoksa seçebileceğim başka yerleşikler var mı?

cevap

20

En yakın komşu filtresine görünümün katman üzerinde magnificationFilter özelliğini ayarlamak gerekir: Eğer içeren dosyasının en üstünde hattını

#import <QuartzCore/CALayer.h> 

eklemeyi ihmal etmeyin

[[view layer] setMagnificationFilter:kCAFilterNearest] 
+1

rekle cevabı söylediği gibi, setMagnificationFilter kullanırken alma ekleyin emin olun: –

+1

harika ve benim amacı sağlayan, ama ben kullandığınızda, sormak istiyorum 'magnificationFilter = kCAFilterNearest', görüntünün orijinal piksellerini büyüten büyük veya keskin pikseller mi, yoksa sadece bazı işlemlerle mi üretildi? – Suge

-2

Bunu yapmanın iki yolu vardır. Yeniden enterpolasyon olmadan yeniden ölçeklendirilebilir bir algoritma uygulayabilirsiniz. Bu çok işe yararsa, görüntüyü gimp veya photoshop gibi başka bir uygulamada yeniden ölçeklendirebilirsiniz. Bu, uygulamanızda dinamik olarak boyutu değiştirmeniz gerekmedikçe işe yarayacaktır.

5

setMagnificationFilter öğesini çağırın veya derlemez.

+0

Ve projenize QuartzCore çerçevesini ekleyin (Gruplar ve Dosyalar -> Ekle -> MevcutFrameworks ... -> QuartzCore.framework -> Ekle). – suda

0

Swift

imageView.layer.magnificationFilter = kCAFilterNearest 
imageView.layer.shouldRasterize = true