Ich habe einen Stempel für Fotos als svg-Graphik gebastelt und ein Skript dazu, das Textvariable im Stempel setzt und dann den Stempel in eine png-Graphik mit der Breite des Fotos umwandelt, die im letzten Schritt unten ins das Foto geklatscht wird. Das funktioniert so weit ganz schön, aber mit dem Essen kommt bekanntlich der Appetit, denn für Querformat-Bilder produziert die Methode übermäßig große Stempel, wenn der für Hochformat ausgelegt ist und von Bildern mit "unorthodoxen" rechteckigen Formaten ganz zu schweigen. Man müßte also Elemente des Stempels skalieren und den (dunklen) Hintergrund in der y-Achse verzerren, um den Stempel passend zum Seitenverhältnis des Bildes zu skalieren. Der Stempel selbst ist mit Inkscape gemacht - das geht nach etwas Einarbeitung wirklich sehr schön. Allerdings sind die Koorinaten der Elemente und die Transformationsmatrizen mit greulich krummen Werten besetzt und zur manuellen Bearbeitung wäre es sehr schön, wenn man die einzelnen Gruppen, aus denen der Stempel besteht, jeweils in den ++ - Quadranten verschieben könnte, so daß die kleinste x- und y-Koordinate jeweils 0 ist. Dann könnte man die Transformationsmatrizen relativ einfach modifizieren, um den gewollten Effekt zu bekommen. Gibts irgendwelche Werkzeuge, mit denen man solche Transformationen automatisch und gruppenweise machen kann?
Uhu Uhuhu schrieb: > Ich habe einen Stempel für Fotos als svg-Graphik gebastelt und ein > Skript dazu, das Textvariable im Stempel setzt und dann den Stempel in > eine png-Graphik mit der Breite des Fotos umwandelt, die im letzten > Schritt unten ins das Foto geklatscht wird. > > Das funktioniert so weit ganz schön, aber mit dem Essen kommt > bekanntlich der Appetit, denn für Querformat-Bilder produziert die > Methode übermäßig große Stempel, wenn der für Hochformat ausgelegt ist > und von Bildern mit "unorthodoxen" rechteckigen Formaten ganz zu > schweigen. > > Man müßte also Elemente des Stempels skalieren und den (dunklen) > Hintergrund in der y-Achse verzerren, um den Stempel passend zum > Seitenverhältnis des Bildes zu skalieren. > > Der Stempel selbst ist mit Inkscape gemacht - das geht nach etwas Oje, Inkscape... > Einarbeitung wirklich sehr schön. Allerdings sind die Koorinaten der > Elemente und die Transformationsmatrizen mit greulich krummen Werten > besetzt und zur manuellen Bearbeitung wäre es sehr schön, wenn man die > einzelnen Gruppen, aus denen der Stempel besteht, jeweils in den ++ - > Quadranten verschieben könnte, so daß die kleinste x- und y-Koordinate > jeweils 0 ist. > > Dann könnte man die Transformationsmatrizen relativ einfach > modifizieren, um den gewollten Effekt zu bekommen. > > Gibts irgendwelche Werkzeuge, mit denen man solche Transformationen > automatisch und gruppenweise machen kann? Man kann Elemente zu Gruppen zusammenfassen (<g>) und Transformationen auf die ganze Gruppe anwenden. Was Inkscape erzeugt ist allerdings nicht wirklich hilfreich, weil es die Trafos in jedes ELement kopiert, wie CSS-Eigenschaften übrigens auch. 1) Beim Sodipodi-Zeug beim SChreiben von SVG deaktivieren, brauch kein Mensch. 2) Rundungswerte für Koordinaten hochsetzen, 10 Nachkommastellen braucht ebenfalls niemand, es sei denn bei komplett wahnsinnigen Zeichnungen oder Skalierungen. Falls du Trafos zerlegen willst, dafür gibt es Tools. Dürfte bei rechtiwinkligen Trafos aber kein Problem sein.
Blöd ist, daß relative Linien und absolute Bezierkurven innerhalb eines Pfades durcheinander gehen, wie Kraut und Rüben. Der Sodipodi-Kram juckt wenig.
Inkscape-Einstellungen -> SVG Ausgabe -> Relative Koordinaten erlauben deaktivieren. Erzwinge Kommandowiederholung deaktivieren kann ggf. auch nützlich sein. Ansonsten würde ich doch eher beim "Stempel-Prozess" ansetzen, man kann doch meist dort eh eine Zielgröße angeben, wenn du also etwas mehr Details über dein Skript verrätst kommt man eventuell zu einer komfortableren Lösung als verändern der Eingangsdaten ...
Ich habe mir jetzt einfach zwei Stempel-Templates gemacht, eins für Hoch- und eins für Querformat. (In der Q-Version sind einfach Logos und Texte kleiner und der Hintergrund-Gradient entsprechend niedriger.) Das Skript sieht jetzt nach, ob das Bild hoch- oder querformatig ist und wählt dann das passende Template aus. Mal sehen, ob das reicht. Auf jeden Fall: die Möglichkeiten von svg beeindrucken. Stempel ohne Skalierungsartefakte sehen einfach besser aus, als welche, die aus einer Raster-Maske hingefrickelt sind.
Läubi .. schrieb: > Inkscape-Einstellungen -> SVG Ausgabe -> Relative Koordinaten erlauben > deaktivieren. Erzwinge Kommandowiederholung deaktivieren kann ggf. auch > nützlich sein. Das scheint aber nur für neu gezeichnete Elemente zu wirken. Wenn man in einer bestehenden Zeichnung die relativen Koordinaten verbietet und dann abspeichert, bleiben die l-Elemente in einem Pfad relativ.
Ich glaub man muss einmal alles markieren und ein paar Pixel verschieben bin aber nicht sicher, da das erst in irgendeiner Version neu hinzugekommen ist, ich also mit einer Zeichnung gestartet bin welche schon "richtige" Koordinaten hatte. Ob ich dann die Änderung nochmal durchgeführt habe oder durch "verschieben" das Problem gelöst habe weiß ich nicht mehr. Für zukünftige Zeichnungen aber ggf. dennoch nützlich.
Nachdem ich mich etwas genauer mit svg beschäftigt habe, scheint es das Einfachste zu sein, ein kleines Ruby-Skript zu schreiben, das Pfade komplett ins Relativ-Format umrechnet. Die ganze Chose kann man dann leicht im Editor zusammenstöpseln und mit Transformationsmatrizen zurechtbiegen. Der Stempel besteht aus einem Logo links unten, zwei Texten rechts daneben und einem dritten Text am rechten unteren Bildrand. Unter Logo und Texten liegt ein grauer Gradient, der unter den unteren 2/3 des Logos liegt und nach rechts auf einer Bézierkurve so weit herunter geht, daß der rechte Text auch gerade noch davon unterlegt ist - er soll den notwendigen Kontrast bereitstellen, damit der Stempel nicht im Bild ersäuft. Der Gradient wird mit einem Gauss-Filter weichgezeichnet und wirkt auf einem Bild mit hellem Hintergrund wie ein Schatten. Um diese Konstruktion unabhängig vom Bildformat zu bekommen, müßte der linke Block so skaliert werden, daß er ~15% der Bildhöhe bekommt. Entsprechend müßte der Text rechts auch nach diesem Maß skaliert werden und wenn er am rechten Bildrand verankert ist, dann ist der skalierbare Stempel perfekt. Dann bleibt nur noch, die svg-Komponenten so aufzubauen, daß sie möglichst einfach zu skalieren sind, dann könnte das Ganze in ein Skript verpackt werden, dem man nur noch Datei und Parameter übergibt, um ein in jedem Fall "schön" gestempeltes Bild zu bekommen.
Uhu Uhuhu schrieb: > Um diese Konstruktion unabhängig vom Bildformat zu bekommen, müßte der > linke Block so skaliert werden, daß er ~15% der Bildhöhe bekommt. > Entsprechend müßte der Text rechts auch nach diesem Maß skaliert werden > und wenn er am rechten Bildrand verankert ist, dann ist der skalierbare > Stempel perfekt. Splitte doch die beiden Teile einfach in zwei Dateien, wieso so umständlich. Dann in deinem "Stempel-Prozess" die gewünschten Skalierungsfaktoren berechnen und beides skaliert und in den gewünschten "Ecken" auf das Bild zeichnen lassen. Das Skalieren an sich sollte die Lib (welche du ja partout nicht nennen magst), eigentlich selbst übernehmen.
:
Bearbeitet durch User
Läubi .. schrieb: > Splitte doch die beiden Teile einfach in zwei Dateien, wieso so > umständlich. Gute Idee... Nur der durch eine Bézierkurve begrenzte Gradient, der ausreichend Kontrast für Texte und Logo erzwingt, tanzt etwas as der Reihe, denn der muß in x und y verschieden skaliert werden. (Im Moment behelfe ich mir mit zwei Versionen des ganzen Stempels. Das klappt einigermaßen, wenn das Bildformat vom gängigen Fotoformat nicht all zu sehr abweicht und wenn es nicht gar zu klein ist, aber diese Randfälle müßte man so oder so gesondert abhandeln.) > Das Skalieren an sich sollte die Lib (welche du ja partout nicht nennen > magst), eigentlich selbst übernehmen. Siehe Anhang.
Uhu Uhuhu schrieb: > diese Randfälle müßte man so oder so gesondert abhandeln Das sit immer ein Problem, da muß man aber auch mal überlegen ob man wirklich 2000x5 px Grafiken stampen muss ;-) composite (http://www.imagemagick.org/script/composite.php) unterstützt doch sogar Transformationsmatrizen, damit kann man doch so ziemlich alles erschlagen. Ich würde auch mal sehen ob das nicht direkt SVG versteht wenn ich das richtig sehe konvertierst du den Stempel erst in ein PNG, das ist einerseits umständlich und andererseits ggf. ein Qualitätsverlust. Ansosnten wäre eine eSkript oder Programiersprache eventuell besser geeigent als ein Shell-Skript auf lange Sicht.
Läubi .. schrieb: > Das sit immer ein Problem, da muß man aber auch mal überlegen ob man > wirklich 2000x5 px Grafiken stampen muss ;-) So extrem ist das nicht, aber schon weniger schräge Verhältnisse bringen kein ästhetisch akzeptables Resultat mehr - ich hoffe, du verstehst, was gemeint ist ;-) > Ich würde auch mal sehen ob das nicht direkt SVG > versteht wenn ich das richtig sehe konvertierst du den Stempel erst in > ein PNG, das ist einerseits umständlich und andererseits ggf. ein > Qualitätsverlust. Das ist die Theorie. Die Praxis ist, daß composite mit dem Alfakanal von svg nicht klar kommt.
:
Bearbeitet durch User
Uhu Uhuhu schrieb: > mit dem Alfakanal von svg Du meinst die Halbtransparenz bei Gradienten? Ansonsten gibt es bei SVG keinen Alpha-Kanal. Wenn das so ist, würde ich mal einen Bugreport bei Imagemagik eröffnen, mit Glück ist es dann in folgenden Versionen gefixt. Uhu Uhuhu schrieb: > aber schon weniger schräge Verhältnisse bringen kein ästhetisch > akzeptables Resultat mehr Das war zwar extrem, aber auch "gutmütige Verhältnisse von 4:3 sind bei 40x30 Pixel sicher nicht brauchbar. Deshalb sollte man sich hier denke ich auch auf sinnige Verhältnisse und Pixelgrößen einschränken anstatt zu viel Zeit und Energie in ungewöhnliche Verhältnisse zu stecken.
Läubi .. schrieb: > Du meinst die Halbtransparenz bei Gradienten? Ansonsten gibt es bei SVG > keinen Alpha-Kanal. Wie man das nennt, ist egal. Der Effekt ist jedenfalls, daß composite der svg einen knalleweißen Hintergrund verpaßt und das Ganze dann in das Zielbild hinein klatscht. > Wenn das so ist, würde ich mal einen Bugreport bei > Imagemagik eröffnen, mit Glück ist es dann in folgenden Versionen > gefixt. Das scheint ein ziemlich alter Hut zu sein - ich habe entsprechende Hinweise auf dem Web gefunden. Auffällig ist auch, daß Inkscape gemessen an den Möglichkeiten, die es interaktiv bietet, nicht gerade über üppige Kommandozeilen-Möglichkeiten verfügt, aber genau diese Lücke von Imagemagick perfekt abdeckt. > Das war zwar extrem, aber auch "gutmütige Verhältnisse von 4:3 sind bei > 40x30 Pixel sicher nicht brauchbar. Man könnte das Verhalten des Stempels in Richtung solcher Extremfälle aber sehr schön modellieren, auch wenn man solche Winzbildchen nicht sinnvoll bearbeiten kann. (Die brauchen eh keinen Klauschutz mehr...)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.