ответ Яна Турона

из консоли:

К сожалению. Оригинальный ответ был конкретным для аналогичного вопроса. Это было исправлено:

var canvas = document.getElementById("mycanvas");
var img    = canvas.toDataURL("image/png");

Так что вам не нужна дополнительная библиотека.

document.write('<img src="' img '"/>');

Если вам нужно изменить только один элемент, первый, который JS найдет в DOM, вы можете использовать это:

— вернуть список прослушивателей событий, если имя установлено, вернуть массив прослушивателей для этого события

Как упомянуто в другом ответе, сообщении на псевдо-URL

 <canvas id=canvas width=200 height=200></canvas>
 <script>
      window.onload = function() {
          var canvas = document.getElementById("canvas");
          var context = canvas.getContext("2d");
          context.fillStyle = "green";
          context.fillRect(50, 50, 100, 100);
          // no argument defaults to image/png; image/jpeg, etc also work on some
          // implementations -- image/png is the only one that must be supported per spec.
          window.location = canvas.toDataURL("image/png");
      }
 </script>

Теоретически это должно создать, а затем перейти к изображению с зеленым квадратом в середине, но я не проверял.

Существует хороший

Вы можете использовать это, чтобы записать изображение на страницу:

var canvas = document.getElementById("mycanvas");
var image = canvas.toDataURL("image/png");

:

document.write('<img src="' image '"/>');

Где «image / png» — это тип mime (png — единственный, который должен поддерживаться). Если вам нужен массив поддерживаемых типов, вы можете сделать что-то вроде этого:

var imageMimes = ['image/png', 'image/bmp', 'image/gif', 'image/jpeg', 'image/tiff']; //Extend as necessary 
var acceptedMimes = new Array();
for(i = 0; i < imageMimes.length; i  ) {
    if(canvas.toDataURL(imageMimes[i]).search(imageMimes[i])>=0) {
        acceptedMimes[acceptedMimes.length] = imageMimes[i];
    }
}

Вот решение, которое работает для меня:

«, который не работает.

var canvas = document.getElementById("mycanvas");
var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); //Convert image to 'octet-stream' (Just a download, really)
window.location.href = image;

Если вы используете это с разными типами MIME, обязательно измените оба экземпляра image / png, но не image / octet-stream.It также стоит упомянув, что если вы используете какие-либо междоменные ресурсы для рендеринга вашего холста, вы столкнетесь с ошибкой безопасности, когда попытаетесь использовать метод toDataUrl.

function exportCanvasAsPNG(id, fileName) {

    var canvasElement = document.getElementById(id);

    var MIME_TYPE = "image/png";

    var imgURL = canvasElement.toDataURL(MIME_TYPE);

    var dlLink = document.createElement('a');
    dlLink.download = fileName;
    dlLink.href = imgURL;
    dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');

    document.body.appendChild(dlLink);
    dlLink.click();
    document.body.removeChild(dlLink);
}

wkhtmltopdf Я понял, что в моем случае работают только функции $ ._ data (): Во-первых, мне нужен контейнер для всех прослушивателей событий на странице: это гибкий, но очень простой в использовании

wkhtmltopdf stackoverflow.com/questions/923885/ this_question.pdf

Это оно!

— установка заголовков

внутри строки Javascript litteral интерпретируется HTML-анализатором как закрывающий тег, вызывая неожиданное поведение (

в виде прозрачного PNG toDataURL

и добавление метода

$filename = "test.jpg"; //or png
header('Content-Description: File Transfer');
if($msie = !strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false)      
  header("Content-type: application/force-download");else       
  header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename="$filename"");   
header("Content-Transfer-Encoding: binary"); 
header("Expires: 0"); header("Cache-Control: must-revalidate"); 
header("Pragma: public");

для удаления прослушивателя.

$data = $_POST['data'];
$img = imagecreatefromstring(base64_decode(substr($data,strpos($data,',') 1)));

— экспорт изображения , так как метод JPEG

$width = imagesx($img);
$height = imagesy($img);
$output = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($output,  255, 255, 255);
imagefilledrectangle($output, 0, 0, $width, $height, $white);
imagecopy($output, $img, 0, 0, 0, 0, $width, $height);
imagejpeg($output);
exit();

— или .Это безголовый сценарий WebKit с JavaScript или CoffeeScript.

imagesavealpha($img, true);
imagepng($img);
die($img);

Еще одно интересное решение Как я могу преобразовать время из другого часовой пояс к местному времени в JavaScript? .

для получения дополнительной информации.

Если вы используете jQuery, что делают многие люди, то вы реализуете принятый ответ следующим образом: Снимок экрана и возвращает

Вот хороший пример для полярных часов (из RaphaelJS):

>phantomjs rasterize.js http://raphaeljs.com/polar-clock.html clock.png

Это обеспечивает безопасный и неограниченный доступ с вашей веб-страницы к ресурсам компьютера на клиенте без использования технологии плагинов для браузера, такой как AcitveX или Java Applet. Тем не менее, мир программного обеспечения также должен быть установлен.

> phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf

https://github.com/MrRio/jsPDF

var canvas = $("#mycanvas")[0];
var img = canvas.toDataURL("image/png");

$("#elememt-to-write-to").html('<img src="' img '"/>');

В некоторых версиях Chrome вы можете:

  1. Используйте функцию рисования изображения ctx.drawImage(image1, 0, 0, w, h);
  2. , так как эти функции позволят вам регистрировать добавленные прослушиватели: