Ho un'immagine in .jpg format
con white background color
. Voglio rimuovere il colore di sfondo bianco in trasparente in Imagemagick
. Ho provato molti modi, ma lo sfondo bianco non può essere rimosso. Qualcuno può aiutarmi a risolvere questo.Come sostituire il colore di sfondo bianco con trasparente di un'immagine in ImageMagick?
risposta
In primo luogo, è necessario convertire il formato immagine da .jpg
in formato .png
, perché JPEG non supporta la trasparenza. Quindi utilizzare il comando:
convert image1.png -fuzz 20% -transparent white result.png
L'opzione -fuzz
permette la deviazione percentuale specificata dal colore bianco puro da convertire trasparente pure. Questo è utile, ad esempio, quando l'immagine contiene rumore o sfumature sottili.
Cosa c'era di sbagliato nella mia risposta? (Non hai detto nella tua domanda che hai richiesto un certo grado di sfocatura, né hai fornito un file di esempio - quindi era impossibile indovinare ...) –
Non è necessario convertire i file * prima * da JPEG a PNG e solo * quindi * convertire da bianco a trasparente. Il mio comando fa tutto in * one * go. –
@KurtPfeifle Capisco che avrebbe potuto aiutarti a migliorare la tua risposta invece di rispondere alla sua; ma senza '-fuzz 20%' non ha funzionato qui; Penso che la tua risposta potrebbe essere migliorata con l'opzione fuzz btw, non vedo assolutamente alcun problema nel farlo; anche la sua risposta non è completamente giusta in quanto potrei passare direttamente da un jpg a un risultato png; e alla fine entrambe le risposte portano un problema serio; il colore di sfondo del contorno (che qui è nero) diventa trasparente; ma anche tutto il nero all'interno dell'immagine reale diventa trasparente; ciò che ha davvero incasinato la mia immagine ...:> –
Non si può avere trasparenti i colori di sfondo nei vostri file JPEG. Il formato file JPEG non supporta la trasparenza.
Se avete bisogno di sfondo trasparente, è necessario convertire il formato JPEG per
- o PNG (di alta qualità, la dimensione del file, eventualmente, più grande di JPEG)
- o GIF (nel caso in cui si può tollerare di bassa qualità e di un gamma di massimo 255 colori).
comando Esempio:
convert your.jpg -transparent white your.png
Devo aver letto il tuo post, e non il tuo comando vero e proprio; ho pensato che stavi suggerendo "conversione manuale" scusa per il confusione, ho votato la tua risposta. Non ho molta familiarità con la sintassi, ma sono con le sue capacità. – Jim22150
Ho appena scoperto una cosa molto bella!
magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png
Si tratta di uno script bash Fred Weinhaus che può essere scaricato da here (per uso non commerciale solo). Inoltre ci sono circa 250 script !! e questo è fantastico! ha fatto esattamente il trucco, per rimuovere tutti gli sfondi mantenendo inalterati i punti dell'immagine interna!
Alla sua pagina, ci sono diverse immagini come esempi in modo da scegliere quello che è necessario mettere sulla riga di comando!
La posizione iniziale è una 1,1
guesser generale dicendo tutto il contorno è di sfondo.
Prestare attenzione che l'uscita deve essere ".png"
assolutamente incredibile, grazie! – dsummersl
Questa è la mia soluzione senza Magicwand (sostituire magick
da convert
per im < 7.0):
magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png
in ubuntu imagemagick v8: 6.7.7.10 - errore 'convert.im6: definizione primitiva del disegno non conforme 'alpha' @ error/draw.c/DrawImage/3158., qualche idea? –
Ecco il comando giusto per imagemagick 6: convert "./input.jpg" -fill none -draw 'color 1,1 floodfill' output.png –
Cosa hai provato? Potrebbe essere necessario convertirlo prima in modalità "indexed color" (ad es. PNG). Indipendentemente da come lo fai, puoi aspettarti che gli artefatti appaiano al confine tra immagine e trasparente. – msw
trasparente al bianco: http://stackoverflow.com/questions/2322750/replace-transparency-in-png-images-with-white-background –