Domanda

Sto cercando di annotare un testo un'immagine di base su con un dropshadow. Non mi piacciono i risultati che ricevo da utilizzando l'opzione -Ombre, quindi sto mettendo giù il testo, sfocatura, poi mettere giù il testo di nuovo in bianco, alcuni pixel compensati dall'ombra. Ecco il comando che sto usando:

convert base_image.jpg \
        -font TT0590M_.ttf \
        -fill gray30 \
        -annotate +0+0 '' -gravity North \
        -annotate +72+32 'ABCDEFGHIJKLM' \
        -blur 0x4 \
        -fill white \
        -annotate +72+27 'ABCDEFGHIJKLM' \
        combined.png

Il mio problema è che l'opzione -blur è la sfocatura non solo il primo strato di testo, ma l'immagine di base sottostante pure. Voglio solo il primo strato di testo per sfocare, non l'immagine di base.

Ho letto un po 'di utilizzare pile e ho cercato di isolare il primo strato di testo e il comando di sfocatura utilizzando \( \) intorno a quella parte, come ad esempio il seguente:

convert base_image.jpg \
        -font TT0590M_.ttf \
        -fill gray30 \
        -annotate +0+0 '' -gravity North \
        \( -annotate +72+32 'ABCDEFGHIJKLM' \
        -blur 0x4 \) \
        -fill white \
        -annotate +72+27 'ABCDEFGHIJKLM' \
        combined.png

I risultati sono gli stessi - sia l'immagine di base sottostante l'ombra del testo e sono sempre blured. Temo non sto avendo molta fortuna capire pile o quali altri comandi dovrei utilizzare per ottenere l'effetto che sto cercando.

È stato utile?

Soluzione

Come spesso accade, ho continuato a battere via a questo in quanto la pubblicazione della domanda e sono riuscito a risolverlo da solo.

Il cambiamento importante è che ho iniziato con un vuoto, tela trasparente invece di avviare l'immagine di base con. Dopo che ottengo destra testo, inserisco l'immagine di base nello stack, invertire l'ordine delle due immagini nello stack, e poi li composito con un tipo di composizione di "screen", che prevede l'uno overtop dell'altro.

Un altro atto di importazione: è necessario il RGBA -channel in modo che le opere di sfocatura in collaborazione con la trasparenza del livello di testo, a causa di una peculiarità nel modo in cui funziona IM. Perché questo è necessario è spiegato in questa pagina .

Inoltre, su sistemi Windows (.bat file invece di script di shell), le virgolette singole devono essere doppi apici e le backslash "\" devono essere segni di omissione "^", o tutto si abbatte.

Lo script di seguito è il, risultato di esercizio (* nix versione) finale:

convert  \
    -size 500x500 xc:transparent \
    -font TT0590M_.ttf \
    -annotate +0+0 '' -gravity North \
    -fill gray30 \
    -annotate +75+35 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
    -channel RGBA \
    -blur 0x4 \
    -fill white \
    -annotate +72+30 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
    -insert 0 base_image.jpg \
    -swap 0,1 \
    -composite -compose screen \
    combined.png
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top