2009-08-01 6 views

cevap

2

Görüntünün kenarları pürüzlü görünüyor çünkü bunlar doğrudan bir piksel ızgarasına yerleştiriliyor ve enterpolasyon yapılmıyor. Nearest Neighbor Interpolation en basit enterpolasyon türüdür, burada piksel ızgara A'nız varsa ve görüntünüzü piksel ızgarası B'ye taşırsanız, B ızgarasındaki pikseller A ızgarasından en yakın pikseli seçerek seçilir. Diğer enterpolasyon biçimleri ağırlıklı ortalamaları seçer B köşesinde piksel değerine ulaşmak için en yakın piksellerden biri.

Görüntünüz, pürüzlü kenarlarıyla, bir iphone'daki bir afine dönüşümünde varsayılan enterpolasyon türü olabilecek en yakın komşu enterpolasyonunu kullanıyor gibi görünüyor.

En yakın komşu dışında başka bir enterpolasyon düzeni kullandığınızda, bir piksel ızgaradan diğerine aktarırken alt örneklemenin mükemmel olmadığı aliasing efektleri elde edersiniz. Bu efekt, görüntüdeki kenarların kendiliğinden daha bulanık hale gelmesini sağlar.

+0

Açıklamanız için teşekkürler, ancak bunu iphone için objektif c'de nasıl yapabileceğimi biliyor musunuz? – Ton

+0

Belki de CGInterpolationQuality'yi kCGInterpolationHigh – mmr

+1

olarak ayarlamayı deneyin. Bu değeri ayarlamak için ho örneğiniz var mı? Ben sadece kendi imajımı bir UIImage ile biliyorum. – Ton

1

Herzaman o piksel interpolasyon nedeniyle biraz daha yumuşak kenarları neden oluyor (90 ° artışlarla hariç) bir resmin üzerine dönüşür.

+0

Öke, ama benim resim daha yumuşak hafif kenarları sanmıyorum, gerçekten resmin bir göz atın ve siz normal düşünüyorsanız bana söyler misiniz !, çirkin görünüyor? Bağlantıyı soruma dahil ettim. – Ton

2

sadece görüntüde iyi antialiasing sağlayacak görüntüyü rasterleştirmek UIImageView'ın CALayer kullanarak

CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height); 
UIGraphicsBeginImageContext(imageRect.size); 
[image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)]; 
image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
11

için 1px şeffaf sınır ekleyin.

imageView.layer.shouldRasterize = YES; 
+0

Mükemmel çalışıyor! Teşekkürler! – DonnaLea

+0

Bu benim için mükemmel çalıştı. Düzenli UIView w/arka plan renginde sabit jagjiler birkaç derece döndü. – mattorb

İlgili konular