0
votes

Image de culture à l'intérieur de la frontière (enlever tout dehors)

J'ai une image hexagonale avec des pièces d'autres hexagones proches. Parce que l'image par défaut est carrée, mais hexagone est, eh bien, hexagone. Cela ressemble à ceci:

 j


Mais j'aimerais éliminer ces triangles en dehors de la frontière pour garder l'hexagone avec fond transparent.

J'ai essayé avec Script AutoTrim et essayé différentes combinaisons de commandes ImageMagick, qui Avoir le but d'étendre la frontière blanche et de remplacer la couleur blanche à transparent. de
Convertir BASE.PNG -FUZZ 10% -TRIM + REPAGE OUT.PNG
Magick Base.png \ (-Clone 0 -fuzz 15% -fill blanc + blanc + opaque blanc -Draw "Couleur $ CENTE, $ CENTY inondation" \) -Alpha off -Comment SRC -Commosite Out.png de
Composite -Comment SRC -GRAVITY CENTER BASE.PNG -AlPHA SET OUT.PNG de
Et j'ai utilisé la commande, basée sur Ce Réponse
Magick Base.png \ (-Clone 0 -Fuzz 15% -Lefill noir + opaque "RGB (255 255 255)" -Lefill blanc + opaque blanche blanche blanc -Draw "couleur $ CENTX, $ CENTY inondation" \) - Alpha Off -commose Copy_opity -Composite Out.png

mais rien n'a fonctionné.
Donc, ma question est, comment prolonger la bordure de l'image et remplacer la couleur d'arrière-plan ou sur la manière de recadrer l'image à l'intérieur de la frontière, mais préserver la forme hexagone ?


0 commentaires

3 Réponses :


1
votes

Utiliser ImageMagick 6.9.10.78 sur Mac OSX, je reçois ce qui suit:

entrée: p>

Entrez la description de l'image ici P>

Faire des coins transparents (à l'aide de l'inondation à chaque coin): strong> p> xxx pré>



Entrez la description de l'image ici p>

Crop to inner rectangle: strong> p>

convert DB8m5.png -fill white -fuzz 95% \
-floodfill +0+0 black \
-rotate 90 -floodfill +0+0 black \
-rotate 90 -floodfill +0+0 black \
-rotate 90 -floodfill +0+0 black \
-rotate 90 \
-bordercolor white -border 1 \
-fuzz 0 -fill none \
-floodfill +0+0 white \
-shave 1 \
result.png


2 commentaires

Merci pour la solution, mais je ne pouvais pas le faire fonctionner. Après à l'aide de l'inondation à chaque coin , il y a toujours de petites lignes blanches. Je suppose que ce comportement causé par différentes images d'image Magick (j'utilise 7.0.9-8). Mais merci pour la solution que vous avez faite ici ImageMagick.org/Discourse -Server / viewtopic.php? t = 36543 # P1680 67 J'ai mis à jour le courant et dans quelques images, les itérations peuvent obtenir le résultat souhaité.


Votre titre est un peu déroutant. Mais voyez mon ajout dans ma réponse pour vous débarrasser de la frontière blanche ainsi que des coins.



0
votes

avec ImageMagick V6 ou V7 Vous pouvez recadrer un hexagone assez précis à partir de n'importe quelle image d'entrée avec une commande comme celle-ci ...

convert -size 1000x1155 xc:white \
   -background none -virtual-pixel none \
   -distort SRT 60 -distort SRT 60 \
   wizard: +distort SRT "%[fx:min(t?1:v.w/u.w,t?1:v.h/u.h)] 0" \
   -gravity center -compose srcin -composite -shave 1 hexout.png


2 commentaires

Merci pour la solution, mais j'ai déjà hexagone et je n'ai pas besoin de créer un autre.


Si vous avez déjà l'hexagone, utilisez-le comme masque pour un simple composite alpha. Ignorer la partie de mon exemple avant de lire dans l'image d'entrée et il suffit de lire dans votre image de masque là-bas. C'est frapper votre forme de masque hexagone hors de l'original et laisserez les coins transparents.



0
votes

La solution que j'ai proposée était de faire une chaîne d'appels pour changer l'image. Ceci est une solution modifiée et étendue fournie avec ici

CENT_X="$(magick $filename -format "%[fx:w/2]" info:)"
CENT_Y="$(magick $filename -format "%[fx:h/2]" info:)"
magick $filename \( -clone 0 -fuzz 1% -fill black +opaque "rgb(255,255,255)" -fill white +opaque black -fill white -draw "color $CENT_X,$CENT_Y floodfill" \) -alpha off -compose copy_opacity -composite $filename_prep.png
convert $filename_prep.png -fuzz 10% -transparent white $filename


0 commentaires