将图像存储到 png 文件中

Storing Image into png file

本文关键字:文件 png 图像 存储      更新时间:2023-09-26

我想使用javascript将网页存储到png文件中。我对下面的示例代码感到厌倦。但问题是当我下载时,它的下载扩展名image/octet-stream但在下载文件期间,我想以 png 格式存储图像。如何将图像从图像/八位字节流扩展下载到 png 扩展。法典:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>html2canvas example</title>
 <script type="text/javascript" src="js/html2canvas.js"></script>
  <script type="text/javascript" src="js/excanvas.js"></script>
    <style>
    canvas{border:1px solid #222}
    </style>
</head>
<body id="target">
      <a class="upload"  >Upload to Imgur</a>  
    <a href="#" download="testXXX.jpg" onclick="printImg()" ><img src="images/print-icon.png" alt="Print" width="16" height="16" ></a>
    <h2>this is <b>bold</b> <span style="color:red">red</span></h2>   
    <p> Feedback form with screenshot This script allows you to create feedback forms which include a screenshot, 
    created on the clients browser, along with the form. 
    The screenshot is based on the DOM and as such may not be 100% accurate to the real 
    representation as it does not make an actual screenshot, but builds the screenshot based on the 
    information available on the page. How does it work? The script is based on the html2canvas library,
     which renders the current page as a canvas image, by reading the DOM and the different styles applied 
     to the elements. This script adds the options for the user to draw elements on top of that image, 
     such as mark points of interest on the image along with the feedback they send.
      It does not require any rendering from the server, as the whole image is created on the clients browser.
       No plugins, no flash, no interaction needed from the server, just pure JavaScript! Browser compatibility Firefox 3.5+ Newer versions of Google Chrome, Safari & Opera IE9
    </p>

    <script type="text/javascript">
    function printImg(){
        html2canvas( [ document.body ],{
          onrendered: function(canvas) {
          var img = canvas.toDataURL("image/png").replace("image/png","image/octet-stream;base64");                 
          window.location.href=img;
          }
        });
      }

    </script> 
</body>
</html>

怕这就是DataURL的工作方式。

请参阅以下问题以获取带有有点丑陋解决方案的答案:

使用"打开方式"对话框命名从画布保存的 PNG 文件

(答案中的 href 将指向 JavaScript 中的 'img' var(