0

Ich muss nahtlose quadratische Bilder von Fotos erstellen. Jedes Foto hat die Auflösung 6000x4000 und das konvertierte Bild sollte 4000x4000px oder so haben. Ich möchte dies auf Linux-Rechner mit ImageMagick ausführen, entweder aus einer Bash oder einem Perl-Skript. Hat jemand eine einfache Art, es zu tun?Nahtlose Bilder von Fotos mit imagemagick

+0

Ich verstehe Ihre Frage nicht. Was ist ein nahtloses quadratisches Bild? Möchten Sie ein 6000x4000 Bild in ein einzelnes 4000x4000 Bild zuschneiden, indem Sie 2000 Pixel abschneiden? Oder skalieren und verzerren Sie das Originalbild? Oder nimm 16 Bilder von 6000x4000 und vergrößere sie jeweils auf 1000x1000 und montage sie zu einem einzigen großen 4000x4000? Es ist sehr unklar - für mich zumindest! –

+0

Sorry für die Unklarheit. Ich möchte einzelnes Bild von 6000x4000 auf 4000x4000 zuschneiden und dieses Bild nahtlos machen. Das Zuschneiden könnte so erfolgen, dass 1000 Pixel von beiden Seiten abgeschnitten werden. – piotao

+0

Hat meine Antwort oder andere Ihr Problem gelöst? Wenn ja, dann überlege dir bitte, ob du es als Antwort akzeptierst - indem du auf das grüne Häkchen neben der Stimmenzahl klickst. Wenn nicht, sag bitte, was nicht funktioniert hat, damit ich oder jemand anderes dir weiter helfen kann. Vielen Dank. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

Antwort

2

Perl hier. Dies wird ein Bild zu 400x400 ausgehend von der Position 0, 0 (oben links) zuzuschneiden:

use warnings; 
use strict; 

use Image::Magick; 

my $img = Image::Magick->new; 

$img->Read('img.jpg'); 

print $img->Get('width') . " "; 
print $img->Get('height') ."\n"; 

$img->Crop(geometry => '400x400+0+0'); 
$img->Write('img_new.jpg'); 

$img->Read('img_new.jpg'); 

print $img->Get('width') . " "; 
print $img->Get('height') ."\n"; 

Ausgang:

4128 2322 # original 
400 400 # new 
+0

Dies scheint die richtige Lösung für mich zu sein, danke !!! Dunno, der dir -1 gab, gebe ich +1 weil das die OK Methode für mich ist. Ich werde prüfen, ob das funktioniert. – piotao

+0

@piotao Da dies die einzige Antwort auf einen älteren Beitrag ist, und es für Sie funktioniert, markieren Sie es bitte als akzeptiert, indem Sie auf das Häkchen klicken. Sie sollten dies für jede Frage tun, die Sie fragen; akzeptiere immer die beste Antwort, die dein Problem gelöst hat. – stevieb

+0

Nun, das ist leider nur ein Teil der Lösung. Einfach eine schöne Art, Bilder zu beschneiden, aber sie werden nur abgeschnitten. Ein anderer Teil meiner Frage ist immer noch ungelöst - wie konvertiert man sie nach dem Zuschneiden in nahtlose Bilder? Nahtlos in einer Weise, die es mir erlaubt, sie als Textur auf großen Objekten zu verwenden und keine Nähte zu sehen.Wiederholungsmuster optimal sollte nicht zu sichtbar sein (ich weiß, das hängt von einem Bild ab). – piotao

3

Lassen Sie uns mit diesem Bild beginnen, die 600x400 ist:

enter image description here

Nun, wenn Sie die zentralen 400 Pixel der Breite und der vollen Höhe des Originals wollen:

convert start.png -gravity center -extent 400x result.png 

enter image description here

Oder, wenn Sie die rechten 300 Pixel wollen:

convert start.png -gravity east -extent 300x result.png 

enter image description here

Oder wenn, wie Ihre Frage, aber um den Faktor 10 verkleinert, die Sie wollen Um 100px von links zu beginnen und 400px zu nehmen, können Sie mit einem Offset zuschneiden:

convert start.png -crop 400x+100 result.png 

enter image description here

Hinweis:

Ich habe das Startbild mit:

convert xc:cyan xc:magenta xc:yellow +append -resize 600x400\! start.png 
+0

+1 für die Art und Weise, wie Sie das ganze Bild erstellt haben. Gibt es nun eine Methode, um es in ein nahtloses Bild zu konvertieren? – piotao

+0

@piotao Die Sache ist, ich weiß nicht, was du mit * "seamless" * meinst. Ich habe am 16. November unter Ihrer Frage als Kommentar gefragt, aber ich weiß immer noch nicht, was Sie meinen. Eine Naht ist normalerweise eine Verbindung oder ein Gelenk, also nahtlos bedeutet * "ohne" * und, soweit ich sehen kann, gibt es keine Verbindung in meinem resultierenden Bild. Wenn Sie erklären, was Sie meinen, werde ich wieder schauen. –

+0

Nahtlose Bilder werden in Computergrafiken zum Texturieren von 3D-Modellen verwendet. Ein solches Bild ist so vorbereitet, dass Sie es auf jeder Oberfläche kacheln können und Sie die Grenzen des Bildes nicht sehen können. So heißt es: nahtlos. Nun, ich habe viele gute Fotos von Felsen, Terrain, Bettwäsche, etc. und ich würde gerne automatisches Skript ausführen, um sie nahtlos zu machen. Einige von ihnen können schlecht sein, aber einige von ihnen könnten in Ordnung sein. – piotao

Verwandte Themen