Das freut mich zu hören. Danke auch nochmal an @LeffSpike, der meine quick&dirty Lösung weiter entwickelt hat (sein Skript war die Grundlage für die Powershell Version oben). Hier nochmal der Post aus dem anderen Thread mit der bash Version:
In so einem Fall sollte man das Bild entweder um 90° drehen oder einfach die Eingabeparameter tauschen. Mir würde auf die Schnelle nur ein Hack einfallen: Bildabmessungen vergleichen und wenn Breite < Höhe einfach die Parameter im Skript umdrehen.
Damit lässt sich einfach und schnell belibige Bilder Texte usw einfügen und direkt drucken. Danach muss man nur noch das fertige Bild ausschneiden, bzw. die Vorlagen bei Amazon bestellen und raus trennen.
Hi
Hier tut sich ja mal richtig was . Ihr seit alle so fit ,und ich bekomme das hier
nicht einmal hin . Ich habe alle diese Tools nicht gekannt und gerade mal installiert und es funktioniert . Jetzt geht es ans lernen um mein Problem zu lösen
Da müsstest du wohl die Powershell wenigstens auf Version 3 aktualisieren. Vermutlich gibt es den Parameter in deiner Powershell Version nicht. Prüfen ob deine Version den Parameter kennt könntest du z.B. mit: get-help gci
Die Powershell Version siehst du mit: $psversiontable
Der Schalter macht aber nix weiter als dafür zu sorgen, dass Ordner nicht mit verarbeitet werden. Wenn du keine Unterordner hast, kann das denke ich auch bedenkenlos weggelassen werden. Eventuell geht es dann etwas weiter, aber ich weiß nicht, wo sich deine Version möglicherweise noch dran stören könnte (Wildcards im „-name“ Parameter, bestimmte Berechnungen, …).
Einen weißen Rand z.B oben im Bild hinzuzufügen ist recht einfach mit dem „splice“ Parameter möglich: convert my.jpg -background white -splice 0x123 my_new.jpg (im Zweifel steht das auch in der ImageMagick Doku).
Allerdings wird dabei das Seitenverhältnis verändert und ein vernünftiger Ausdruck ist dann nicht mehr ohne Weiteres möglich. Die Schwierigkeit liegt darin die Berechnungen umzustellen und (bei Verwendung des vorhandenen Codes) die Logik so anzupassen, dass alles andere weiterhin wie bisher funktioniert. Wenn man unnötige Skalierung vermeiden möchte, müsste man die Länge des Hintergrundes um einen relativen Wert vergrößern (je nach Bild- und Aufklebergröße), damit man hinterher an der gewünschten Stelle an der anderen Seite einen weißen Streifen in der korrekten Größe hinzufügen kann. Bei sowas tue ich mich immer schwer, aber mit etwas trial&error kommt man oft sehr weit Außerdem machts ja mitunter auch Spaß und man lernt was dabei!
Gern. Mit Wildcards meinte ich aber die * in einem der Powershell Kommandos. Ich weiß nicht, ob das in der Form in älteren Powershell Versionen gültig ist
Hallo zusammen,
Super was sich hier tut! @Dave : Das Feature mit dem automatisch drehen finde ich keinen Hack - das ist ein Feature Request den meine Frau auch schon geäußert hat Sobald ich mal wieder Zeit habe, werde ich das einbauen. Ebenso ein kleines Batch, das ein ganzes Verzeichnis abarbeitet (ich mache daraus lieber 2 getrennte Batch-Files, dann ist die Fehlersuche einfacher). Und als drittes einen Schwellwert für AspectioIn/AspectratioOut, ab dem dann gar nicht gefüllt, sondern nur verzerrt wird.
Danke auch für die „Werbung“ für das Skript - freut mich, dass es gut angekommen ist.
Die genannten Tools schaue ich mir eventuell auch mal an. Aber ich wollte von Anfang an lieber ein Offline Tool haben…
Jetzt muss ich erst mal ins Kinderzimmer schauen, da wird es grade so leise…
„Hack“ meinte ich auch nur, weil die Parameternamen dann nicht mehr zu den Werten passen (height und width vertauscht) und das verwirrend sein kann. Ich hatte so schon Mühe bei dem Wildwuchs an Namen den ich da aufgeschrieben hatte Die Parameter tauschen funktioniert aber ansonsten so weit ich gesehen habe. Das Problem mit der lieben Zeit kennen wohl die meisten TonUINO-Bauer, wenn man bedenkt wer die Zielgruppe ist
Bezüglich der Fehlersuche hast du Recht. Ich habe auch schon gemerkt, dass lustige Sachen passieren können, wenn man wie ich einfach eine Schleife um den Block legt, der die Bilder umwandelt und dann an den Parametern rumspielt Schöner ist sicher das Umwandeln in eine Funktion auszulagern und die Schleife um Ordner abzuarbeiten außen herum zu legen.
Hauptsache ist ja, dass möglichst viele Leute mitmachen und zusammen an diesem tollen Projekt arbeiten. Deshalb hatte ich einfach erstmal etwas gebaut, damit auch Windows User deine Weiterentwicklung ausprobieren können (bash gibt es so weit ich weiß nicht für Windows 7 und 8). Ich selber nutze Windows 10 und Ubuntu, also bin ich da eher nicht festgelegt. Das Schöne ist aber, dass mittlerweile sehr vieles unabhängig vom verwendeten OS läuft (bash gibts für Windows 10, die Powershell auch für MacOS und Linux). Tatsächlich habe ich die Powershell Befehle unter Ubuntu geschrieben und auch da getestet. In einem zweiten Fenster lief dann dein bash Skript zum einfachen Vergleichen der Dateien
ich bin auf das gleiche Problem gestoßen. Hier meine Linux-bash Version (auf Basis des ursprünglichen php Scripts) für die DM Sticker, mit welcher ich einen kleinen grünen Rand oben und unten hinzufüge den man dann abschneiden kann. Die Höhenauflösung des Original Bildes wird beibehalten und die Breite entsprechend dem Seitenverhältnis für DM angepasst. Hab bisher 8 Sticker bei DM Drucken lassen. Soweit hat das ganz gut gepasst.
#!/bin/bash
file=$1
outfile="DM_"$1
height_dm=57 # DM Sticker Height
width_dm=82 # DM Sticker Height
height_RFID=54 # RFID Sticker Height
width_RFID=85 # RFID Sticker Height
height_Sticker=51 # So hoch soll der Sticker sein
width_Sticker=82 # So breit soll der Sticker sein
sizex=`identify -format "%[width]" $file`
sizey=`identify -format "%[height]" $file`
ratio=`echo "scale=5; ($height_dm/$width_dm)" | bc` # Verhältnis DM
sizeynew=`echo "scale=0; ($sizey*$height_dm/$height_Sticker)" |bc`
sizexnew=`echo "scale=0; ($sizeynew/$ratio)" |bc`
convert -size "$sizexnew""x""$sizeynew" xc:green im_out.jpg # Grundfläche im DM Format
sizex10=`echo "$sizex/10" |bc`
sizey10=`echo "$sizey/10" |bc`
convert -adaptive-resize "$sizex10""x""$sizey10" $file im_background.jpg
convert -gaussian-blur 0x4 im_background.jpg im_background.jpg
convert -adaptive-resize "$sizexnew""x""$sizey"\! im_background.jpg im_background.jpg
convert im_out.jpg im_background.jpg -compose src-over -gravity center -composite im_out2.jpg
convert im_out2.jpg $file -compose src-atop -gravity center -composite $outfile
rm im_out2.jpg im_out.jpg im_background.jpg
Hier gibts ja jetzt einige Möglichkeiten Cover zu erstellen. Es wäre sicher eine gute Idee das Ganze zu vereinheitlichen und z.B. in Python umzusetzen. Das OS-unabhängige Skript könnte man dann ins Github hochladen, so dass jeder direkt Zugang dazu hat (analog zu den bereits vorhandenen „Text-To-Speech“ Skripten).
Mit Hilfe der hier geposteten Lösungen ließe sich das bestimmt entsprechend übersetzen. Ein Problem könnte allerdings sein, dass das „subprocess“ Modul von Python unter Windows anders funktioniert als unter Linux. Hier müsste man sich was überlegen. Am besten wäre aber denke ich eine Lösung die nur Module aus der Python Standardbibliothek benutzt, um dem Benutzer unnötige Probleme bei der Installation von pip o.ä. zu ersparen. Dann müsste lediglich noch das automatische Drehen bei bestimmten „Hochformat“-Bildern eingebaut und das Hinzufügen eines Randes (z.B. für die DM Sticker) als zusätzliches Feature implementiert werden. Andere Wünsche / Probleme habe ich hier bisher nicht gelesen.
Toll wäre natürlich auch, wenn jemand das in php umsetzen könnte, so dass die hier entwickelten Lösungsansätze auch ihren Weg in den online Covermaker finden.
Ich habe es jetzt endlich mal ausprobiert , funktioniert aber bei mir nicht . Bin aber kein Linux-Spezi . Andere Scripte , z.Bsp. einer der Wasserzeichen einfügt , funktionieren . Ich kann den Syntax-Fehler nicht deuten .
sieht dann so aus :
willmar@Linux:~/Bilder$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
willmar@Linux:~/Bilder$ ./DM_Tonuino.sh
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
convert-im6.q16: no images defined im_background.jpg' @ error/convert.c/ConvertImageCommand/3258. convert-im6.q16: unable to open imageim_background.jpg’: Datei oder Verzeichnis nicht gefunden @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no images defined im_background.jpg' @ error/convert.c/ConvertImageCommand/3258. convert-im6.q16: unable to open imageim_background.jpg’: Datei oder Verzeichnis nicht gefunden @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no images defined im_background.jpg' @ error/convert.c/ConvertImageCommand/3258. convert-im6.q16: unable to open imageim_background.jpg’: Datei oder Verzeichnis nicht gefunden @ error/blob.c/OpenBlob/2701.
convert-im6.q16: ImageSequenceRequired -composite' @ error/mogrify.c/MogrifyImageList/7989. convert-im6.q16: no images definedim_out2.jpg’ @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image im_out2.jpg': Datei oder Verzeichnis nicht gefunden @ error/blob.c/OpenBlob/2701. convert-im6.q16: no images definedDM_’ @ error/convert.c/ConvertImageCommand/3258.
rm: das Entfernen von ‚im_out2.jpg‘ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
rm: das Entfernen von ‚im_background.jpg‘ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
willmar@Linux:~/Bilder$
Vermutlich ist dein Aufruf falsch. Ich kenne mich mit der Syntax aus dem Kopf auch nur bedingt aus, aber hast du mal versucht dem Skript einen Dateinamen übergeben, also z.B.: