1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bilder in DataURL umawandeln - JavaScript

  • flyingtable07
  • 22. November 2023 um 21:54
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 22. November 2023 um 21:54
    • #1

    Moin,
    Ich versuche hochgeladene Dateien über JavaScript in DataURls umzuwandeln. ich habe zu folgenden Code:

    Code
    window.imageToDataURL = function(file) {
        return new Promise((resolve, reject) => {
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            const img = new Image();
            img.onload = function() {
                canvas.width = img.width;
                canvas.height = img.height;
                ctx.drawImage(img, 0, 0);
                const dataURL = canvas.toDataURL();
                if (dataURL.startsWith('data:image')) {
                    resolve(dataURL);
                } else {
                    resolve(null);
                }
            };
            img.onerror = function() {
                resolve(null);
                document.body.removeChild(canvas);
            };
            img.src = URL.createObjectURL(file);
        });
    };
    Alles anzeigen

    Der Code funktionier super. Mein Problem ist nur, dass wenn ich dein 2,14 MB Großes Bild hochlade erhalte ich eine DataURL die gespeichert über 44MB einnimmt. Ich finde das nicht akpeptabel und kann mir auch nicht erklären woher die zusätzlichen daten kommen. Ich brauche die DataURL zwingend, weil ich mit binären Daten nicht arbeiten kann. Ich möchte aber auch nicht unnötig resourcen verschwenden.
    Hat Jemand von euch einen Plan, wie ich die DataURL nur mit den daten bekomme die wirklich im bild enthalten sind?

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 23. November 2023 um 04:40
    • #2

    Wieso kannst du nicht mit Binärdaten arbeiten?

    Deine Dateigröße ist ziemlich schnell erklärt da du ein Canvas erstellst, das dürfte als Bitmap passieren. Wieso nutzt du da kein base64?

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 23. November 2023 um 07:58
    • #3
    Zitat von Syntafin

    Wieso kannst du nicht mit Binärdaten arbeiten?

    Deine Dateigröße ist ziemlich schnell erklärt da du ein Canvas erstellst, das dürfte als Bitmap passieren. Wieso nutzt du da kein base64?

    dataURLs sind doch base64 codiert oder etwa nicht?

    Ich muss die Daten verschlüsseln und dann in einer mysql datenbank speichern können. mit binärdaten wäre alles viel komplizierter. ich brauche einfach eine möglichkeit aus dem File Object einen String zu bekommen den man verarbeiten kann und auch nachher wieder in ein bild umwandeln kann.

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 23. November 2023 um 10:24
    • #4

    Wenn ich das richtig verstanden habe ist bei Javascript "DataUrl" eben base64 ja, du erstellst aber ein Canvas, zeichnest dort die Bilddatei als Bitmap nach und speicherst diese.

    Und ob du nun einen String verschlüsselt oder eine Datei, kommt auf das selbe heraus.

Tags

  • javascript
  • dataurl
  • größe
  1. Datenschutzerklärung
  2. Impressum