ImageMagick dönüştürmede örnekleme / yeniden örnekleme / ölçekleme / yeniden boyutlandırma / uyarlamalı yeniden boyutlandırma / küçük resim operatörleri arasındaki fark nedir?


87

Şunları kullanarak bir görüntünün çözünürlüğünü değiştirmenin birçok yolunu buldum convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

Bunların farkı nedir?

Sabit en boy oranına sahip çeşitli boyutlarda büyük resim küçük resmi yapmam gerekirse (kırpma gerekir) - en iyi seçimim nedir?



Yanıtlar:


140

yeniden boyutlandır

-resize 400x300+20+30( aşağıdaki -scaleve -sampleaşağıdaki örnekler gibi) bir girdiyi piksel boyutlarına sahip bir çıktı görüntüsüne dönüştürür 400x300. Ayrıca çıktıyı 20 piksel sağa ve 30 piksel aşağı kaydırır. Ek olarak, birkaç fark daha vardır -scale:

  • -resizeek bir ayarını destekliyor -filter( kullanmadan önce komut satırında olması gerekir -resize!).

  • -filter Büyütme durumunda eklenen piksellerin renkleri için veya küçültme durumunda bazı komşuları kaldırıldığında kalan pikseller için kullanılacak renkler için kullanılacak kesin algoritmayı belirler.

  • Desteklenen filtrelerin listesi için çalıştırmanız yeterlidir convert -list filter.

  • -filter point -resize 400x300tamamen aynı sonucu oluşturur -sample 400x300, ancak yine de biraz daha yavaş çalışır.

  • Birlikte (önce) ayarlanmadıysa -resize, dönüştürme sessizce varsayılan olarak -filter Lanczoshangisine daha yavaş olur, ancak çok daha iyi bir kalite sağlar (çünkü yeni eklenenler için çevreleyen tüm piksellerin renklerini hesaba katar) -filter pointüretmekten (en yakın olanı kullanır) yeni eklenen piksellerin rengini belirlemek için komşu kuralı).

örneklem

-sample 400x300bir girdi görüntüsünü piksel boyutlarına sahip bir çıktı görüntüsüne dönüştürür 400x300. Bununla birlikte, aşağıdakilerle ilgili çok önemli birkaç farklılık vardır -resize:

  • -sampleek ayarını desteklemiyor -filter; yine de ayarlanırsa, o -filterzaman basitçe yok sayılır.

  • Büyütme sırasında (giriş görüntü boyutu daha küçük olabileceğinden 400x300), pikseller bloklar halinde kopyalanır.

  • Küçültülürken (çünkü girdi görüntü boyutu daha büyük olabilir 400x300), pikseller çok basit bir algoritma ile alt-örneklenir: bazı satırlar ve sütunlar basitçe atlanır.

  • Geometri için bağımsız değişken -samplebir desteklemez ofset (aksine bir kısmını -resizesaygı olan ofset çıkış için direktifler).

  • Çıktı, hiçbir zaman giriş görüntüsünün sahip olduğundan daha fazla (farklı) renge sahip olmayacaktır; daha az renge sahip olabilir.

  • Bu nedenle -sampleçok hızlıdır (daha hızlıdır -resize) - ancak çıktı kalitesi (genellikle) daha kötüdür: Ortaya çıkan çıktıda kolaylıkla aşırı engelleme ve örtüşme efektleri elde edebilirsiniz.

  • Önemli bir özelliği -sample, yeni görüntünün yeni renk içermemesidir, ancak orijinal görüntüden bazı renkler kaybolabilir.

yeniden örneklemek

-resampleparametre olarak hedef görüntünün piksel geometrisini değil istenen XxY çözünürlüğü kullanır . Bu operatörün amacı, bir görüntünün işlenmiş boyutunu korumaktır : Görüntünüzün, onu 300 DPI'da görüntüleyen bir cihazda 4 inç'e 3 inç boyutlarında olduğunu varsayın. Ardından , 72 DPI aygıtta (yine) 4 inç'e 3 inç boyutunda olacak şekilde görüntüyü yeniden boyutlandırmak veya boyutlandırmak istenir.XxY-resample 72-resample 72x72

  • Bu işlem, yalnızca meta verilerinde önceden depolanan istenen bir çözünürlüğe sahip olan bu tür görüntüler için çalışır (tüm görüntü formatları bir görüntü çözünürlüğü kavramını desteklemez - JPEG, PNG ve TIFF destekler).

  • Kaynak görüntü, bir görüntü çözünürlüğü için dahili desteğin eksik olduğu bir formattaysa , çözünürlüğü belirtmeden önce görüntünün (varsayılan) orijinal çözünürlüğü -densitykomut satırında belirtilmelidir .-resample

ölçek

-scale 400x300kullanımı gibi eşdeğer sonucu üretir (ancak daha hızlıdır, çünkü tüm filtre işlemlerini önler) -filter box -resize 400x300. Ayrıca herhangi bir geçerli -filterayarı tamamen yok sayar .

  • Küçültme sırasında, ilgili girdi piksel renklerinin ortalamasını alarak piksel renklerini değiştirerek görüntü boyutunu değiştirir.

  • Büyütürken, gerekli ek pikseller için ilgili girdi piksellerini basitçe kopyalar.

uyarlamalı yeniden boyutlandırma

-adaptive-resize 400x300bir geometri parametresinin ofset kısmını desteklemez (veya ayarlandıysa yok saymaz) ve ayrıca varsa ayarı yok sayar .-gravity

  • Yeniden boyutlandırma sırasında varsayılan olarak veriye bağlı üçgenlemeyi kullanır (yeniden boyutlandırma yöntemi ek olarak belirtilerek geçersiz kılınmadıkça -filter [something]).

küçük resim

-thumbnail-resizebirkaç farklılık dışında olduğu gibi çalışır :

  • Hız için optimize edilmiştir.

  • Küçük resimlerin boyutunu azaltmak için tüm gömülü renk profillerini de kaldırır.


Aşağıdaki cevap, -resizedirektifin birkaç (resimli!) Örneğini göstermektedir . Her çizim, tam yeniden boyutlandırma yönteminin 'ince ayrıntılarına' bağlı olarak farklı bir sonuç gösterir:


4
Teşekkürler, bu ImageMagick belgelerinden çok daha mantıklı.
Paul Brannan

Örnek resimleriniz olsaydı, bu daha da mükemmel olurdu :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

@KurtPfeifle: Öncelikle son derece bilgilendirici cevabınız için teşekkür ederim. Lütfen, Imagemagick için herhangi bir iyi kitap veya bir dokümantasyon pdf önerebilir misiniz? Şu anda sahip olduğum en iyi yaklaşım, okuma süresini kısaltmak için Imagemagick'in tüm sayfalarını kazımak, ancak bu çok fazla bilgi (ki bence her zaman yeterince açıklayıcı değil). Herhangi bir yardım çok takdir edilmektedir.
saurabheights

7

Ciro Santilli'nin söylediği gibi 新疆 改造 中心 六四 事件 法轮功:

Örnek resimleriniz olsaydı, bu daha da mükemmel olurdu :-)

yeniden boyutlandır

google play with -resize (8,0 kB)

-örneklem

-örneklem (2,2kB)

ölçek

ölçek (7.0 kB)

-adaptif-yeniden boyutlandırma

görüntü açıklamasını buraya girin (4,3 kB)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.