Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Chart

Base64 Bilddaten von JPG Format nach PNG umwandeln

Mehr
5 Monate 5 Tage her - 5 Monate 5 Tage her #5098 von Nick
Hallo,

ich habe einen Base64-String welcher Bilddaten im jpg-Format enthält. Gibt es mit dem FlowHeater die Möglichkeit diesen jpg-String einen png-String zu konvertieren/umzuwandeln?

Viele Grüsse
Nick
Letzte Änderung: 5 Monate 5 Tage her von Nick.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Monate 4 Tage her #5101 von FlowHeater-Team
Hallo Nick,

das geht nicht direkt, aber mit Hilfe des .NET Script Heater und untenstehenden C# Skript kann das Problemlos umgesetzt werden. Im Anhang finden Sie ein kleines Beispiel dazu.

Hinweis: Damit das Skript Funktioniert muss im .NET Script Heater im Reiter „Erweitert“ unter DLLs folgender Eintrag hinzugefügt werden „system.drawing.dll“, siehe Screenshot.

Das Skript wandelt die Binären Bilddaten vom JPEG Format in das PNG Format um. Im Beispiel sind ein paar Base64 Heater hintereinander, diese werden im Prinzip nur verwendet im aus der Beispiel JPEG Datei (test.jpg) einen Base64 String zu erzeugen der dann wieder binär decodiert wird.

Schauen Sie sich mal das Beispiel an, ich denke Sie sollten damit klarkommen.

C# Skript um JPEG in PNG umzuwandeln
Code:
public object DoWork() {     MemoryStream msJPG = new MemoryStream((Byte[])InValues[0].GetValue());     System.Drawing.Image image1 = System.Drawing.Image.FromStream(msJPG);     MemoryStream msPNG = new MemoryStream();     image1.Save(msPNG, System.Drawing.Imaging.ImageFormat.Png);     return msPNG.GetBuffer(); }

 

 

Dateianhang:

Dateiname: jpeg-to-png.zip
Dateigröße:17 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Monate 4 Tage her #5103 von Nick
Hallo Herr Stark,

vielen Dank. Funktioniert perfekt mit einer jpg-Datei.

Die Eingangsdaten der jpg-Datei(en) liegen allerdings bereits als codierte Zeichenfolge in einer im Memory-Tabelle vor > Kann ich von hier aus direkt die Zeichenkette für png erzeugen?

Viele Grüsse
Nick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Monate 4 Tage her #5105 von FlowHeater-Team
Hallo Nick,

woher die Daten kommen ist im Prinzip egal. Ich habe mal das Beispiel etwas angepasst. Im ersten Verarbeitungsschritt wird die JPEG Datei als Base64 in eine InMemory Adapter Tabelle eingelesen. Im zweiten Verarbeitungsschritt wird dann der Base64 String gelesen und in ein PNG Bilddatei umgewandelt. Über den File Heater wird die Datei einmal auf Festplatte geschrieben und zum anderen als Base64 String in eine Textdatei ausgegeben.

 

Dateianhang:

Dateiname: jpg-to-png-2.zip
Dateigröße:22 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Monate 1 Tag her - 5 Monate 1 Tag her #5107 von Nick
Hallo Herr Stark,

den JPG-String bekommen wir über eine XML-Datei und schreiben die Informationen in eine Datenbank.

Wenn ich bei diesem Vorgang den JPG-String in einen PNG-String versuche zu wandeln, bleibt das Feld auf der DB leer. Wenn ich allerdings die Umwandlung mit einem gesondertem Flow durchführe funktioniert es wobei die Heater identisch sind:

Flow1 Daten aus XML in DB schreiben
Flow2 JPG-String über Update der DB in PNG-String wandeln

Weshalb das nicht alles in einem Flow abgehandelt werden kann, verstehe ich nicht.

Viele Grüsse
Nick
Letzte Änderung: 5 Monate 1 Tag her von Nick.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Monate 1 Tag her #5108 von FlowHeater-Team
Hallo Nick,

aktuell kann ich mir das nur so erklären. Haben Sie die Definition mit den zwei Verarbeitungsschritten evtl. nur im Testmodus laufen lassen? Das würde das das Verhalten erklären. In dem Fall stehen im zweiten Verarbeitungsschritt keine aktualisierten Daten zur Verfügung, da im Testmodus kein "Datenbank Commit" Durchgeführt wird.

Falls das das Problem nicht löst bräuchte ich zur weiteren Analyse mal die erstellten Definitionen.
 

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Monate 4 Wochen her #5109 von Nick
Hallo Herr Stark,

nein, ich habe es nicht im Testmodus laufen lassen. Ich habe im Anhang wie ich es eigentlich machen wollte was eigentlich funktionieren sollte.

Viele Grüsse
Nick 

Dateianhang:

Dateiname: file.zip
Dateigröße:25 KB

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Monate 4 Wochen her #5110 von Nick
Hallo Herr Stark,

noch eine Sache (leider): Kann man die Ausgabe in der Auflösung in diesem Vorgang reduzieren und die Anzahl der Zeichen bei Ausgabe auf 3997 Zeichen beschränken?

Viele Grüsse
Nick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Monate 4 Wochen her #5111 von FlowHeater-Team
Hallo Nick,

ich habe den Fehler gefunden. Die Anzeige (Ergebnisfenster) hört irgendwann auf die Daten anzuzeigen. Soll heißen, wenn diese zu lang sind wird hier keine Text mehr ausgegeben. In der Datenbank sollten die Daten aber richtig, mit der voller Länge, geschrieben werden.

Um die Auflösung einer Bilddatei ändern zu können müssen Sie lediglich das C# Skript mit folgenden austauschen und die Auflösung manuell ändern, siehe Kommentar im Skript.
Code:
public object DoWork() {     MemoryStream ms = new MemoryStream((Byte[])InValues[0].GetValue());     System.Drawing.Image image = System.Drawing.Image.FromStream(ms);     // hier die Auflösung ändern! 100 = Breite in Pixel, 156 = Höhe in Pixel     System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(image, 100, 156);     ms = new MemoryStream();     bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);     return ms.GetBuffer(); }

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Monate 4 Wochen her #5112 von Nick
Hallo Herr Stark,

funktioniert einwandfrei. :-). Vielen Dank.

Viele Grüsse
Nick

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.323 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.