2017-11-29 3 views
0

ich imagemagick bin neu, und ich brauche dieses MusterRandomly drehen Bild in imagemagick

original image

für gewissen Grad zufällig jetzt zu drehen, was ich mein Bestes tun können, ist:

convert -rotate -15 -background none originfile.png savefile.png 

Dann ist dieses erhalte ich:

rotated image

Ich habe ein Problem:

Ich brauche einen zufälligen Drehwinkel wie Bereich von -30 bis 30, aber jetzt kann ich nur Winkel selbst wählen.

Antwort

2

Sie müssen ImageMagick v7 oder besser dafür:

magick pattern.png -background none -rotate "%[fx:-30+60*rand()]" result.png 

Das auf [0,1] von -30 + 60 x Zufallszahl dreht, das heißt -30 bis +30.

result


Wenn Sie die Version nicht über 7, Sie die Zufallszahl in bash erzeugen kann:

convert pattern.png -background none -rotate "$((RANDOM%60-30))" result.png 

Oder, wenn Sie wollen zuerst den Wert sehen/überprüfen, Sie können es über 2 Zeilen tun:

((r=(RANDOM%60)-30)) 
convert pattern.png -background none -rotate "$r" result.png 

Wenn Sie unter Windows geschehen sein, können Sie eine Zufallszahl zwischen -30 und +30 wie diese erzeugen kann, denke ich:

set /a number=-30 + %random% %% 60 
convert pattern.png -background none -rotate %number% result.png 
0

Sie müssen eine zufällige Funktion einrichten und sie Ihrem Befehl als Variable zuführen. Wenn Sie V7 verwenden, können Sie dies möglicherweise in dem Befehl tun.

2

Mit ImageMagick v6 Sie eine zufällige Rotation zwischen -30 und 30 Grad bekommen unter Verwendung von „+ verzerren“ in einem Befehl wie diese ...

convert originfile.png -background none \ 
    -virtual-pixel none +distort SRT "%[fx:-60*random()+30]" savefile.png 

Für iM v7 sollten Sie „magick“ statt „konvertieren“ verwenden.

1

Eine weitere Option ist Mark Setchell und GeeMack Befehle für ImageMagick 6 als kombinieren:

angle=$(convert xc: -format "%[fx:-60*random()+30]" info:) 
convert pattern.png -background none -rotate $angle result.png