Neu JTL Datenbank -> Bilderspeicher auslesen

Marc Völker

Moderator
Mitarbeiter
15. April 2014
1.915
215
Hürth
Einfach nur Binär.
Das eigentliche Bildformat wird nicht umgewandelt. Sollte also noch png oder jpeg sein.
Kann man aber meistens am Hash auch erkennen, da das Bildformat dort mit rein geschrieben wird.
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Hi,

ich greife das mal wieder auf, da ich aktuelle keine Lösung dafür habe, wie man bBild in das img-Tag einer HTML-Mail (Druckvorlagen) einbauen kann.
Geht das überhaupt? Hat da jemand schon Erfahrungen dazu, welche er teilen kann?

Viele Grüße
Mirko
 

John

Sehr aktives Mitglied
3. März 2012
4.215
1.088
Berlin
Ui, das ist doch mal eine Herausforderung.
Das Problem dürfte weniger das Auslesen aus der Datenbank als das anfügen/einbinden des Bilder in die eMail sein. Dafür fällt mich auch nichts ein.
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Hi,

das ist mein aktueller Stand - das erste img ist das mit Daten aus der DB, das zweite ein Beispiel aus dem Internet. Letzteres funktioniert sogar:
SQL:
{%- capture query -%}
SELECT
    b.bBild
FROM
    tArtikel a
    LEFT JOIN tArtikelbildPlattform bp ON bp.kArtikel = a.kArtikel AND bp.kShop = 4 AND bp.nNr = 1
    LEFT JOIN tbild b ON b.kBild = bp.kBild
WHERE
    a.cArtNr = 'A00001426'
{%- endcapture -%}
{%- assign result = query | DirectQueryScalar -%}
<html>
    <body>
        <img src = "data:image/jpeg;base64, {{result}}" />
        <img src = "data:image/gif;base64, R0lGODlhCAAFAIABAMaAgP///yH5BAEAAAEALAAAAAAIAAUAAAIKBBKGebzqoJKtAAA7" />
    </body>
</html>

Das Ergebnis der Abfrage ist auch anders, als wenn ich es zb im Management Studio aufrufe.
Hier ein Vergleich der ersten 20 Zeichen:
JTL: 25521625522401674707
DB: 0xFFD8FFE000104A4649

Woran könnte das liegen?
Aber auch mit dem Einsetzen des Textes aus der DB in das img-Tag klappt es nicht.

Ist es denn überhaupt Base64 encodiert?

Aktuell schreiben wir nach Anlage und Übertragung von Artikeln zum Shopware-Shop die Live-Bild-URL per UPDATE in das cQuelle Feld in tBild je Artikel. So haben wir dann die URL für die HTML-Mail, aber das ist echt nervig 😉.

Viele Grüße
Mirko
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Das Ergebnis der Abfrage ist auch anders, als wenn ich es zb im Management Studio aufrufe.
Hier ein Vergleich der ersten 20 Zeichen:
JTL: 25521625522401674707
DB: 0xFFD8FFE000104A4649

Woran könnte das liegen?

Die Bilddaten werden in der Tabelle binär abgespeichert.
Wenn man solche Daten in SSMS anzeigt, wird eine hexadezimale Darstellung dieser Daten angezeigt (d.h. immer zwei Stellen nach dem eileitenden 0x ist eine hexadezimaler Wert aus dem Berich 00 bis FF. In einer dezimalen Darstellung wäre das 0 bis 255. Irgendwie müssen die Daten ja angezeigt werden.Ein Anzeigeprogramm könnte sich auch für eine binäre Darstellung entscheiden (also 0 und 1) oder für jedes Byte könnte man das entsprechende ASCII Zeichen anzeigen.....aber eine hexadezimales Byte Array macht für diesen Fall am meisten Sinn und SMSS wählt halt diese Darstellung.
In der Datenbank sind aber nicht wirklich hexadezimale Werte gespeichert, deshalb macht der obige Vergleich keinen Sinn.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: MirkoWK

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Die Bilddaten werden in der Tabelle binär abgespeichert.
Wenn man solche Daten in SSMS anzeigt, wird eine hexadezimale Darstellung dieser Daten angezeigt (d.h. immer zwei Stellen nach dem eileitenden 0x ist eine hexadezimaler Wert aus dem Berich 00 bis 0F. In einer dezimalen Darstellung wäre das 0 bis 255. Irgendwie müssen die Daten ja angezeigt werden.Ein Anzeigeprogramm könnte sich auch für eine binäre Darstellung entscheiden (also 0 und 1) oder für jedes Byte könnte man das entsprechende ASCII Zeichen anzeigen.....aber eine hexadezimales Byte Array macht für diesen Fall am meisten Sinn und SMSS wählt halt diese Darstellung.
In der Datenbank sind aber nicht wirklich hexadezimale Werte gespeichert, deshalb macht der obige Vergleich keinen Sinn.
Das ist schonmal sehr aufschlussreich und erklärt schonmal den Unterschied der Anzeige 👍.

Hast du eine Idee dazu, wie man es dann auch anzeigen lassen könnte?
 

kelvin.

Sehr aktives Mitglied
15. Februar 2023
168
65
Frankfurt
Versuchs es mal mit der Query. Ist zwar keine schöne Lösung, aber so müsstest du den richtigen Wert bekommen.

Code:
{%- capture query -%}
SELECT
    (SELECT b.bBild AS '*' FOR XML PATH(''))
FROM
    tArtikel a
    LEFT JOIN tArtikelbildPlattform bp ON bp.kArtikel = a.kArtikel AND bp.kShop = 4 AND bp.nNr = 1
    LEFT JOIN tbild b ON b.kBild = bp.kBild
WHERE
    a.cArtNr = 'A00001426'
{%- endcapture -%}
 
  • Gefällt mir
Reaktionen: MirkoWK

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305
Versuchs es mal mit der Query. Ist zwar keine schöne Lösung, aber so müsstest du den richtigen Wert bekommen.

Code:
{%- capture query -%}
SELECT
    (SELECT b.bBild AS '*' FOR XML PATH(''))
FROM
    tArtikel a
    LEFT JOIN tArtikelbildPlattform bp ON bp.kArtikel = a.kArtikel AND bp.kShop = 4 AND bp.nNr = 1
    LEFT JOIN tbild b ON b.kBild = bp.kBild
WHERE
    a.cArtNr = 'A00001426'
{%- endcapture -%}
Hi,

also das funktioniert 👍.

Noch eine 2 generelle Anmerkungen:
Das Laden dauert etwas beim Testen, aber die Mail wird ja erst versendet, wenn geladen.
Die Qualität des Bildes ist leider nicht so gut, wenn es wie ins unserem Fall relativ klein ist (120x90px im HTML von 1600x1200px aus der Datenbank). Ich nenne es mal Treppeneffekt 😉. (Das war nur in der Vorschau so )

Viele Grüße
Mirko
 
Zuletzt bearbeitet:

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Die Daten
Super 👍
Noch eine 2 generelle Anmerkungen:
Das Laden dauert etwas beim Testen, aber die Mail wird ja erst versendet, wenn geladen.
Die Ladezeit ist von der Datenmenge in dem Feld abhängig. Vielleicht wärs ja auch mit dem Vorschaubild getan?

Die Qualität des Bildes ist leider nicht so gut, wenn es wie ins unserem Fall relativ klein ist (120x90px im HTML von 1600x1200px aus der Datenbank). Ich nenne es mal Treppeneffekt 😉. (Das war nur in der Vorschau so )
Schickt ihr denn tatsächlich 1600x1200px große Bilder per Email raus?
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
835
305

Ähnliche Themen