Foto resizing

Goodspeed

Goodspeed

Foren Gott
Da hab ich mal eine Frage an die Grafiker hier im Forum.

Hintergrund:
Ich habe hier viele alte Fotos (von vorm Krieg) eingescannt. Die haben nun die kryptischsten Formate (quadratisch bis Panorama). Die meisten Fotoshops (oder was man halt so zum Drucken nimmt) akzeptieren jedoch nur Fotos im 3:4 Verhältins (früher 9x13 ...), in anderen Fällen wird das Bild brutal beschnitten.

Ich würde nun folgende Funktionalität benötigen:
  1. Format der Bildes erkennen
  2. Weiße Vorlage im 3:4 Verhältnis erzeugen, in die das Bild hineinpasst
  3. Bild einfügen und ohne Quali-Verlust speichern
Ergebnis wäre dann ein Bild im 3:4-Format mit dem kompletten Foto und eventuellen weißen Rändern.

Ob das kanze per Gimp-Macro oder Shell-Script realisiert wird, ist Wurst, wäre aber nicht schlecht, wenn es "Massenverarbeitungstauglich" wäre ... es sind/werden mehrere hundert Fotos ...

Nun hab ich von Bildbearbeitung sowas von keine Ahnung, dass ich nichtmal Google mit brauchbaren Suchbegriffen füttern kann (unter resizing verstehen die z.B. was anderes, als ich will).

Vorschläge? Links? Lösungen? :D
 
Ich glaube die CeWe-Dienstleister (u.a. Schlecker, manche DM, etc) haben dynamische Bildformate. Natürlich auch nur in einem gewissen Rahmen (also kein Panorama). Aber das sollte mehr helfen als der Beschnitt...

Falls Du im Netz keine Infos dazu findest, dann kontaktier mich per Mail, dann such ich mal in meinem Kram :)

Moritz
 
Wenn ich das auf der Webseite richtig verstehe, muss man dazu aber trotzdem jedes Bild einzeln anfassen und "in Form" bringen ... oder? Das wollte ich ja grad umgehen ...
 
Ich könnte was in Perl dazu schreiben, hab aber erst morgen abend Zeit. Gib mir Bescheid, ob Du's dann noch noch brauchst, nicht dass ich mich umsonst dran setze.

Gruss, Xanti
 
Wie Du siehst, konnte/wollte mir keiner weiter helfen ... also falls Du da noch Ideen haben solltest ... ;)
 
Wie Du siehst, konnte/wollte mir keiner weiter helfen ... also falls Du da noch Ideen haben solltest ... ;)

Ich hätte dir auch nur die Lösung von Xanti anbieten können.
Aber ich lass ihm gerne den Vortritt. :devil:
Das wird mir für einem Einzeiler nämlich zu lang. ;)

Irgendwo hier muss noch so ein Script rumfliegen, ich habe da sowas ähnliches schonmal gebastelt mit perl und imagemagic.
Finde es nur nicht mehr in meinem S*laden.:D

Also Xanti frisch ans Werk. :headup:
You know Wolfgang -> :oldman

Gruß Wolfgang
 
wie schauts mit imagemagic aus. - das sollte alles können was du brauchst.

der convert-befehl sollte dir da helfen können.
ich hab schon lange nicht mehr damit gearbeitet - deshalb kann ich dir keinen code bieten.
aber mit ein bischen nachlesen und ausprobiern solltest du da ohne probleme ein script basteln können
 
Ich könnte mich auch in die Doku zu Python und Paintshop einlesen ... oder zu Gimp ... usw.
Aber "Zeit" ist derzeit eins der wenigen Dinge, die ich nicht wirklich hab (bringt das Berufs- und Familienleben so mit sich). Daher meine Frage nach "spezifischeren" Dingen ... und wenn Wolgang nicht genauso ein Schlump wäre wie ich, hätte sich das Thema ja vielleicht auch schon erledigt *feix*
 
Mit convert und combine sollte das Problem tatsaechlich in Kuerze erledigt sein. Ich hatte ein wenig rumprobiert, bin allerdings daran gescheitert, dass die bash kein Gleitkommaoperationen kann, so dass die Berechnung des Hintergrundformates nicht klappte. Da kann sicher perl o.ae. weiterhelfen. Ansonsten kannst Du mit
einer 'identify image.jpg' | cut...' serie Hoehe und breite bestimmen und dann mit einer simplen if-Abfrage die Dimension des Hintergrundes bestimmen.

Den Hintergrund erstellst Du mit 'convert xc:- ...', die beiden Bilder ueberdeckst Du danach mit 'combine'. Das ist sicher das schnellste, falls hier jemand einen Einzeiler postet, wie man in der Shell "int (widht * 4/3)" berechnet. Dann sollte das ganze in 1h erledigt sein.
 
So, da bin ich aber geehrt, dass die Herren "Schlumpen" mir den Vortritt lassen. :devil:

Naja egal, hier mein Skript-Versuch:

resize.pl:
Code:
#!/usr/bin/perl -w

use Image::Magick;
use strict;

foreach (@ARGV) {
	my $old = Image::Magick->new;
	$old->Read($_);
	my ($x_old, $y_old) = $old->Get('width', 'height');
	my ($x_new, $y_new) = (3*$x_old < 4*$y_old)
		? (4*$y_old/3, $y_old) : ($x_old, 3*$x_old/4);
	my $new = Image::Magick->new(size=>"$x_new x $y_new");
	$new->Read('xc:#ffffff');
	$new->Composite(compose=>'Over', image=>$old, x=>0, y=>0);
	s/(\..*?)$/-new$1/;
	my $err = $new->Write($_);
	warn "$err" if "$err"
}

Die Images werden als Parameter mitgegeben, z.B.

Code:
resize.pl *.jpg

Die neuen Images werden nach imgname-new.jpg geschrieben. Der weisse Rahmen wird unten oder rechts angefügt. Wenn Du das Bild mittig willst, einfach mitteilen. Das Skript sollte eigentlich funktionieren, Garantie gibts natürlich nicht. Eventuell muss unter Debian perlmagick installiert werden.

Da der Herr Goodspeed jetzt ganz viel Zeit für Kinder und Frau(en) gespart hat, kann er mir erklären, wie ich Debian auf meiner Aldi-Personenwaage installiere... :devil:

Gruss, Xanti
 
Erstmal danke an die kreativen Köpfe ... testen kann ich das allerdings erst am WE.

1. Ja, bitte mittig, sonst sieht das doof im Fotoalbum aus ;)
2. Per tftp ... oder hat Deine billige Waage keinen Ethernet-Anschluss? :D
 
Erstmal danke an die kreativen Köpfe ... testen kann ich das allerdings erst am WE.

1. Ja, bitte mittig, sonst sieht das doof im Fotoalbum aus ;)
Achso, ich dachte, Du wolltest sie weiterverarbeiten. Gut, mittig wird verlangt und geliefert:

Code:
#!/usr/bin/perl -w

use Image::Magick;
use strict;

foreach (@ARGV) {
	my $old = Image::Magick->new;
	$old->Read($_);
	my ($x_old, $y_old) = $old->Get('width', 'height');
	my ($x_new, $y_new, $x_frame, $y_frame) = (3*$x_old < 4*$y_old)
		? (4*$y_old/3, $y_old, $y_old/6, 0)
		: ($x_old, 3*$x_old/4, 0, $x_old/8);
	my $new = Image::Magick->new(size=>"$x_new x $y_new");
	$new->Read('xc:#ffffff');
	$new->Composite(compose=>'Over', image=>$old, x=>$x_frame, y=>$y_frame);
	s/(\..*?)$/-new$1/;
	my $err = $new->Write($_);
	warn "$err" if "$err"
}

2. Per tftp ... oder hat Deine billige Waage keinen Ethernet-Anschluss? :D

Ne, hat keinen Ethernet-Anschluss. Die einzige Möglichkeit der Kommunikation ist die Gewichtsänderung. ;)
 
Na dann musste halt versuchen, ob Du nen Speicherüberlauf provozieren kannst ... und wenn Du dann noch das richtige Gewicht an die richtige Stelle schreiben läßt, haste ein fertiges Debian ... incl. MP3-Player ... was Dir jedoch ohne Audio-Buchse nix nützen wird ...
Und um für das Passwort im richtigen Takt auf der Waage zu hüpfen find ich auch nicht gerade "useful" ...
 
Also ich bin ehrlich enttäuscht von Debian. Linux 10.2 liess sich ohne Hickhack auf der Waage installieren... ?(
 
Also ich bin ehrlich enttäuscht von Debian. Linux 10.2 liess sich ohne Hickhack auf der Waage installieren... ?(

Und Unix erst.
Das hab ich sogar auf meiner alten Taschenuhr installiert.:D
Allerdings ist die Grafig etwas dürftig.

Xanti 8)
Hut hoch oder wie man sagt.

Aber es war ein Einzeiler zum Klicken verlangt. :devil:

Gruß Wolfgang
 
Zuletzt bearbeitet:
Ich habe mir das Perl script weil ich diese Problem mit der Bildgröße auch habe installiert. Leider kenn ich mich mit Perl nicht aus. Die Bilder werden nicht in beide Richtungen zentriert auf dem weißen untergrund plaziert. Zusätzlich wäre es gut wenn das script prüfen kann, ob das Bild im Hochformat vorliegt. Somit das x und y vertauscht.

Ich bin neu hier im forum ich hoffe das auch deiese alte Problem noch aufgegriffen werden kann
 
Also mittlerweile bietet eigentlich fast jeder Dienstleister an die Bilder dann mit weissem Rand zu erzeugen..
 
Hallo saeckereier,

danke für den tipp. Ich werde eine Probebestellung aufgeben und das Ergebnis hier posten.
 
Zurück
Oben