2012-09-14 8 views
15

white background color ile .jpg format numaralı bir resmim var. Beyaz arka plan rengini Imagemagick içinde şeffaf olarak kaldırmak istiyorum. Birçok yol denedim ama yine de beyaz arka plan kaldırılamaz. Bunu çözmek için bana yardımcı olabilir.ImageMagick'te bir görüntünün şeffaflığı ile beyaz arka plan renginin değiştirilmesi nasıl yapılır?

+0

Ne denedin mi? İlk önce onu "dizinlenmiş renk" moduna (ör., PNG) dönüştürmek zorunda kalabilirsiniz. Nasıl yaptığınıza bakılmaksızın, resimlerin görüntü ile şeffaf arasındaki sınırda görünmesini bekleyebilirsiniz. – msw

+0

Beyaza şeffaf: http://stackoverflow.com/questions/2322750/replace-transparency-in-png-images-with-white-background –

cevap

24

İlk olarak, .jpg den .png biçimine görüntü formatını dönüştürmek gerekir.

convert image1.png -fuzz 20% -transparent white result.png

-fuzz seçenek saf beyaz renkten belirtilen yüzde sapması yanı saydam dönüştürülmesini sağlar: Sonra bu komutu kullanın. Bu, örneğin, görüntünüzde gürültü veya ince degradeler bulunduğunda kullanışlıdır.

+13

Cevabımdaki sorun neydi? (Sorunuzda bir dereceye kadar şaşkınlık duyduğunuzu ve örnek bir dosya vermediğinizi söylemediniz - bu yüzden tahmin etmek imkansızdı ...) –

+6

Dosyaları * ilk * JPEG'den PNG'ye ve sadece * sonra * beyazı saydam hale dönüştürmek gerekli değildir. Benim buyruğum her şeyi yapar * tek * gider. –

+2

@KurtPfeifle Anladığım kadarıyla cevabınızı geliştirmenize yardımcı olabileceğini biliyordum; ama -fuzz% 20 olmadan burada çalışmadı; Bence cevabınız btw seçeneği ile geliştirilebilir, bunu yaparken kesinlikle bir sorun görmüyorum; Ayrıca bir jpg'den png sonucuna doğru gidebildiğim için cevabı tam olarak doğru değil; ve sonunda, her iki cevap da ciddi bir problem getiriyor; Kontur arkaplan rengi (burada siyah) şeffaf hale gelir; ama aynı zamanda gerçek görüntü içindeki bütün siyah da şeffaflaşır; resmimi gerçekten karıştırdı ...:> –

45

JPEG'lerinizde şeffaf arka plan renkleri olamaz. JPEG dosya formatı saydamlığı desteklemez. Eğer şeffaf bir arka plan gerekiyorsa

, sen

  • ya PNG (yüksek kalite, JPEG daha muhtemelen daha büyük dosya boyutu)
  • veya GIF (eğer tahammül düşük kaliteli ve JPEG dönüştürebilirsiniz gerekir maksimum 255 renk aralığı).

Örnek komut: JPEG saydamlığı desteklemediği için

convert your.jpg -transparent white your.png 
+1

Asıl emrinizi değil, yazınızı okudum; "el ile dönüştürme" önerdiğini düşündüğünüzü karıştırmak için üzgünüm, cevabını oylandırdım. Ben sözdizimine çok aşina değilim ama yetenekleri ile yaşıyorum. – Jim22150

6

Sadece çok temiz bir şey buldum!

magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png 

O (ticari olmayan kullanım içindir) here indirilebilir Fred Weinhaus bash komut dosyasıdır. Ayrıca yaklaşık 250 betikleri var! ve bu harika! iç görüntü noktaları dokunulmadan tutarak tüm arka planı kaldırmak için, tam olarak hile yaptı!

Onun sayfasında, örnek olarak birkaç görüntü var, böylece komut satırına koymanız gerekenleri seçiyorsunuz!

Başlangıç ​​konumu 1,1, tüm konturun arka plan olduğunu söyleyen genel bir tahmincidir. çıkış olması gerektiğini

dikkat ".png"

+0

tamamen şaşırtıcı, teşekkürler! Ubuntu imagemagick v8 üzerinde – dsummersl

1

Bu magicwand olmadan benim çözeltisi (im < 7.0 için convert tarafından magick değiştirin) geçerli:

magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png 
+1

: 6.7.7.10 - hata 'convert.im6: olmayan uyumlu çizim ilkel tanımı 'alpha' @ error/draw.c/DrawImage/3158.', herhangi bir fikir? –

+0

İşte "imaginagick 6: dönüştürmek için doğru komut" ./input.jpg "- doldurun yok -draw 'renk 1,1 floodfill' output.png –

İlgili konular