Wie konvertiere ich meine gesamten div-Daten in ein Bild und speichere sie in einem Verzeichnis, ohne Leinwand zu verwenden?

Lesezeit: 6 Minuten

Benutzer-Avatar
Luckyamit

Ich habe bereits meine Daten (Vorlage mit Bild, Text, Beschriftung usw.) in div erstellt, jetzt möchte ich sie in ein Bildformat konvertieren. Gibt es eine Technik, um einen bestimmten div-Inhalt in Bilder umzuwandeln, ohne canvas.anybody plz help me! Ich möchte den gesamten “mydiv”-Inhalt in ein Bild konvertieren und dieses Bild in meinem Bildverzeichnis speichern, wenn ich auf “Speichern” klicke.

<html>
  <header>
  </header>
  <body>
    <label> Template Design</label>
    <div id="mydiv">
      <label> Good Morning</label>
      <img src="https://stackoverflow.com/questions/18545034/mug.png" id="img1" height="100" width="100"  />
    </div>
    <input name="save" type="button" value="SAVE" />
  </body>
</html>

  • Ich bin mir sicher, dass es ein Browser-Plugin gibt, das dies für Sie tun kann.

    – leftclickben

    31. August 2013 um 6:03 Uhr

  • was hast du bisher gemacht? das ist nur das html.

    – HIRA THAKUR

    31. August 2013 um 6:11 Uhr

  • Ja, aber ich möchte alle internen Daten von “mydiv” in ein Bildformat bringen, nachdem ich auf die Schaltfläche SPEICHERN geklickt habe? gibt es eine Lösung?

    – Luckyamit

    31. August 2013 um 6:45 Uhr

  • denn ohne Leinwand wendest du diese Methode an buffernow.com/html-to-image-php-script aber Sie brauchen PHP und einige andere Bibliotheken

    – Rohit

    29. Mai 2018 um 15:59 Uhr

Benutzer-Avatar
Scott

UPDATE (März 2018): Hallo Leute der Zukunft! Diese Antwort wird immer noch stark frequentiert und mir ist aufgefallen, dass das alte JSFiddle, das ich zusammengestellt hatte, kaputt war und daher aktualisiert wurde. Das neue JSFiddle, das diese Technik zeigt, ist hier: https://jsfiddle.net/Sq7hg/1913.

Möglicherweise möchten Sie nach einer Flash-basierten Lösung suchen, wenn Sie diese nicht verwenden können <canvas> (obwohl dies nicht ausdrücklich in alten Versionen von IE funktionieren muss, bin ich mir nicht sicher, warum Sie das nicht können).

http://flashcanvas.net/ ist eine Emulation von <canvas> Verwenden von Flash, das Sie möglicherweise dorthin bringt, wo Sie hin müssen. Die Dokumentation sagt, dass es unterstützt toDataURL() das könnte also für dich funktionieren.

Können Sie mehr Einblick in Ihre Einschränkungen geben? <canvas> sind und was hast du schon probiert?

//BEARBEITEN

Laut Ihrem Kommentar unten können Sie möglicherweise verwenden <canvas>in diesem Fall können Sie versuchen, zu verwenden http://html2canvas.hertzen.com – Es ist eine JavaScript-Lösung, die im Grunde das DOM eines bestimmten Teils Ihres Codes in a umschreibt <canvas> und ermöglicht es Ihnen dann, damit zu interagieren, wie Sie möchten, einschließlich der Umwandlung in Bilddaten über toDataURL().

Ich habe es noch nie verwendet, aber Ihr JavaScript-Code würde in etwa so aussehen:

html2canvas([document.getElementById('mydiv')], {
    onrendered: function(canvas) {
       var data = canvas.toDataURL('image/png');
       // AJAX call to send `data` to a PHP file that creates an image from the dataURI string and saves it to a directory on the server
    }
});

Ich habe hier eine schnelle Jsfiddle davon in Aktion zusammengeklopft: https://jsfiddle.net/Sq7hg/1913/ (Hinweis: aktualisierter Link wie oben)

Diese jsfiddle zeigt, wie man die toDataURL() -Methode, um die Leinwand in ein Bild zu konvertieren und an das Dokument anzuhängen. Das Speichern des generierten Bildes auf einem Server ist eine unendlich komplexere Aufgabe, da ein AJAX-Aufruf oder ähnliches erforderlich ist, um die Bilddaten an ein PHP-Skript zu senden, das die generierten Daten konvertiert data: URL zu einem tatsächlichen Bild und speichert es dann in einem Verzeichnis, für das Sie Schreibberechtigungen haben. Wenn Sie das tun müssen, würde ich empfehlen, anstatt hier darauf einzugehen, mit dieser Stack Overflow-Frage zu beginnen: Wie speichere ich eine HTML5-Leinwand als Bild auf einem Server?

  • Danke Scottie, aber ich habe meine Daten (Vorlage mit Bildern, Text usw.) in div erstellt, jetzt möchte ich sie in ein Bildformat konvertieren. Gibt es eine Technik, um einen bestimmten div-Inhalt in Bilder umzuwandeln oder ihn zuerst in eine Leinwand und dann in ein Bild umzuwandeln? Wenn Sie Code dafür haben, schreiben Sie bitte hier?

    – Luckyamit

    31. August 2013 um 6:31 Uhr


  • Meine Antwort oben wurde aktualisiert, um a aufzunehmen <canvas>-basierte Lösung.

    – Scott

    31. August 2013 um 6:35 Uhr

  • yup gibt es eine Lösung bei html2canvas.hertzen.com Aber ich kann von dort keinen klaren Code bekommen, da ich möchte, dass es für mich verwirrend ist. Könnten Sie mir von dort einen Filtercode geben?

    – Luckyamit

    31. August 2013 um 6:40 Uhr

  • Vielen Dank, können Sie mir jetzt eine Leinwand-zu-Bild-Konvertierung zur Verfügung stellen, wie kann ich diese Ausgabe-Leinwand in ein Bildformat konvertieren?

    – Luckyamit

    31. August 2013 um 11:51 Uhr

  • Antwort erneut aktualisiert mit einigen weiteren Informationen zu toDataURL().

    – Scott

    31. August 2013 um 14:04 Uhr

Benutzer-Avatar
Luckyamit

Das funktioniert perfekt … muss die einfachste Lösung sein.

//html

<div id="mydiv" style="background-image:url(Koala.jpg) ;background-size: 100%;
background-size :200px 200px;
background-repeat: no-repeat;">
<p>text!</p>
<img src="https://stackoverflow.com/questions/18545034/mug.png" height="100" width="100"/></div>
<div id="canvas">
<p>Canvas:</p>
</div>

 <div style="width:200px; float:left" id="image">
 <p style="float:left">Image: </p>
 </div>
 <div style="float:left;margin-top: 120px;" class="return-data">
 </div>
 <script src="http://html2canvas.hertzen.com/build/html2canvas.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

//Stil

#mydiv {
background-color: lightblue;
width: 200px;
height: 200px
}

//Skript

  <script language="javascript">
    html2canvas([document.getElementById('mydiv')], {
    onrendered: function (canvas) {
    document.getElementById('canvas').appendChild(canvas);
    var data = canvas.toDataURL('image/png');
     //display 64bit imag
     var image = new Image();
    image.src = data;
    document.getElementById('image').appendChild(image);
    // AJAX call to send `data` to a PHP file that creates an PNG image from the dataURI string and saves it to a directory on the server

    var file= dataURLtoBlob(data);

// Create new form data
var fd = new FormData();
fd.append("imageNameHere", file);

$.ajax({
   url: "uploadFile.php",
   type: "POST",
   data: fd,
   processData: false,
   contentType: false,
}).done(function(respond){

    $(".return-data").html("Uploaded Canvas image link: <a href="https://stackoverflow.com/questions/18545034/+respond+">"https://stackoverflow.com/questions/18545034/+respond+"</a>").hide().fadeIn("fast");
    });

  }
});

function dataURLtoBlob(dataURL) {
// Decode the dataURL    
var binary = atob(dataURL.split(',')[1]);
// Create 8-bit unsigned array
var array = [];
for(var i = 0; i < binary.length; i++) {
    array.push(binary.charCodeAt(i));
 }
// Return our Blob object
return new Blob([new Uint8Array(array)], {type: 'image/png'});
 }

</script>

Hier ist eine Beispiel-Demo

  • Gut gemacht! Vielen Dank! Du hilfst mir wirklich.

    – r3mmel

    23. Februar 2015 um 7:54 Uhr

  • kannst du bitte ein bisschen mehr erklären? Ich habe versucht, Ihren Beispiel-Demo-Link zu öffnen, aber ich verstehe immer noch nicht, weil dort nichts passiert.

    – dapidmini

    29. November 2018 um 3:38 Uhr

  • Sie können meinen Geigenlink überprüfen: jsfiddle.net/Sq7hg/3120 ich habe den Link in meiner Antwort auch @dapidmini aktualisiert

    – Luckyamit

    30. November 2018 um 14:59 Uhr

1078080cookie-checkWie konvertiere ich meine gesamten div-Daten in ein Bild und speichere sie in einem Verzeichnis, ohne Leinwand zu verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy