Question

Je suis en train d'annoter un texte sur une image de base avec une ombre portée. Je n'aime pas les résultats que je reçois d'utiliser l'option -shadow, donc je suis en train de édulcorer le texte, le flou, puis mettre à nouveau le texte en blanc, quelques pixels décalés par rapport à l'ombre. Voici la commande que je utilise:

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

Mon problème est que l'option -blur brouille non seulement la première couche de texte, mais l'image de base sous-jacente ainsi. Je ne veux que la première couche de texte flou, pas l'image de base.

Je lis un peu sur l'utilisation des piles et essayé d'isoler la première couche de texte et la commande de flou en utilisant \( \) autour de cette partie, comme dans ce qui suit:

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

Les résultats sont les mêmes - à la fois l'ombre du texte et l'image de base sous-jacente sont se Blured. Je crains que je ne suis pas avoir beaucoup de chance de comprendre les piles ou ce que d'autres commandes que je devrais utiliser pour obtenir l'effet que je suis après.

Était-ce utile?

La solution

Comme cela arrive souvent, j'ai continué à tonner à ce depuis l'affichage de la question et j'ai réussi à le résoudre seul.

Le changement important est que j'ai commencé avec une toile vierge, transparent au lieu de commencer par l'image de base. Après avoir reçu le bon texte, insérer l'image de base dans la pile, échangez l'ordre des deux images de la pile, puis les composites avec un type de « écran » Compose, qui définit une overtop de l'autre.

Une autre note d'importation: la RGBA -channel est nécessaire pour que les travaux brouillant en liaison avec la transparence de la couche de texte, en raison d'une particularité de la manière dont fonctionne la messagerie instantanée. Pourquoi est-ce nécessaire est expliqué sur cette page .

En outre, sur les systèmes Windows (fichier .bat au lieu de script shell), les guillemets simples doivent être guillemets doubles et les anti-slash « \ » doivent être carets « ^ », ou tout se désintégré.

Le script est en dessous de la finale, le résultat de travail (* version nix):

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top