yok?Benim döndürülmüş görüntü Aşağıdaki kod ile Resmimi dönen am keskin kenarları
Benim elde görüntü bu: Tek yapmanız
yok?Benim döndürülmüş görüntü Aşağıdaki kod ile Resmimi dönen am keskin kenarları
Benim elde görüntü bu: Tek yapmanız
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.
Herzaman o piksel interpolasyon nedeniyle biraz daha yumuşak kenarları neden oluyor (90 ° artışlarla hariç) bir resmin üzerine dönüşür.
Ö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
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();
kenarları kenar yumuşatmaya olanak Eğer Info.plist ayarlayabileceğiniz bir anahtar var: UIViewEdgeAntialiasing. Aşağıdaki yanıt açıklandığı gibi
: When I rotate an UIImageView with the transform property, the edges pixellate
basit çözüm:
Basitçe Info.plist için bu anahtar-değer çifti ekleyin: EVET olarak ayarlanmış UIViewEdgeAntialiasing.
Açıklamanız için teşekkürler, ancak bunu iphone için objektif c'de nasıl yapabileceğimi biliyor musunuz? – Ton
Belki de CGInterpolationQuality'yi kCGInterpolationHigh – mmr
olarak ayarlamayı deneyin. Bu değeri ayarlamak için ho örneğiniz var mı? Ben sadece kendi imajımı bir UIImage ile biliyorum. – Ton