【问题标题】:How to save a image coded in Data-URI?如何保存以 Data-URI 编码的图像?
【发布时间】:2014-09-22 01:28:18
【问题描述】:

我试图找到一个技巧来保存这样的 Data-URI 编码的图片:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA1MAAAE7CAYAAAA4gNuCAAAgAElEQ…
i/fPjJwSa8k8blB7TPIbffod14w9E/Baq03hUCXPf2/wK6K8SbNo44VwAAAABJRU5ErkJggg==

另一个问题:图片第一次保存在服务器哪里?浏览器?

【问题讨论】:

标签: image uri


【解决方案1】:

JS:save image to user's disk using javascript

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8"/>
        <script type="text/javascript">
            window.onload = function () {
                var img = document.getElementById('embedImage');
                var button = document.getElementById('saveImage');
                img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA'+
                'AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO'+
                '9TXL0Y4OHwAAAABJRU5ErkJggg==';
                img.onload = function () {
                    button.removeAttribute('disabled');
                };
                button.onclick = function () {
                    window.location.href = img.src.replace('image/png', 'image/octet-stream');
                };
            };
        </script>
    </head>
    <body>
        <img id="embedImage" alt="Red dot"/>
        <input id="saveImage" type="button" value="save image" disabled="disabled"/>
    </body>
</html>

PHP:http://j-query.blogspot.com/2011/02/save-base64-encoded-canvas-image-to-png.html

<?php
    // requires php5
    define('UPLOAD_DIR', 'images/');
    $img = $_POST['img'];
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.png';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
?>

编辑 JS 解决方案 2(小提琴:http://jsfiddle.net/KAdN8/):

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8"/>
        <script type="text/javascript">
            var img = document.getElementById('embedImage');
            if( document.createEvent ) {
              var evObj = document.createEvent('MouseEvents');
              evObj.initEvent( 'click', true, false );
              img.dispatchEvent(evObj);
            } else if( document.createEventObject ) {
              img.fireEvent('on'+evt);
            }
        </script>
    </head>
    <body>
<a href="data:image/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" download="image.png" id="embedImage">Download</a>
    </body>
</html>

【讨论】:

  • 它保存图片但不是以这种方式保存图片的javascript解决方案 name.png 或 name.jpg 它允许您将图片下载到浏览器的默认下载文件夹中:(
  • @karimkarim 添加了重命名下载文件的答案。但“下载”属性仅适用于较新的浏览器。
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 2019-02-08
  • 2015-04-23
  • 2011-09-16
  • 2014-11-30
  • 2011-10-19
  • 2018-02-14
  • 2016-08-03
相关资源
最近更新 更多