【问题标题】:Convert local image to base64 string in Javascript在Javascript中将本地图像转换为base64字符串
【发布时间】:2015-12-26 07:59:33
【问题描述】:

我正在尝试将 本地 图像转换为 Base64 字符串。我没有使用任何 HTML,只需要在代码中引用图像路径的 javascript。

例如,转换:

C:\Users\Work\Desktop\TestImage.jpg

进入

/9j/4AAQSkZJRgABAQEASABIAAD/4QBKRXhpZgAASUkqAAgAAAADABoBBQABAAAAMgAAABsBBQABAAAAOgAAACgBAwABAAAAAgAAAAAAAAAAVOoqgJaYAABU6iqAlpgA/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIH.....etc...

有很多这样的帖子,但它们似乎都以某种方式利用 HTML 来识别文件路径。我希望我可以在 in javascript 中编写定义的文件路径。

我试过没有用:

function convertImgToBase64()
{
    var canvas = document.createElement('CANVAS');
    img = document.createElement('img'),
    img.src = C:\Users\Work\Desktop\TestImage.jpg;
    img.onload = function()
    {
        canvas.height = img.height;
        canvas.width = img.width;
        var dataURL = canvas.toDataURL('image/png');
        alert(dataURL);
        canvas = null; 
    };
}

一个例子有以下 html 和 javascript,但我希望这可以合并在一起。感谢您的支持

HTML:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>


<input type='file' id="asd" />
<br>
<img id="img" src="//placehold.it/1x1/" />
<div id="base"></div>
</body>
</html>

Javascript:

function el(id){return document.getElementById(id);} // Get elem by ID

function readImage() {
    if ( this.files && this.files[0] ) {
        var FR= new FileReader();
        FR.onload = function(e) {
             el("img").src = e.target.result;
             el("base").innerHTML = e.target.result;
        };       
        FR.readAsDataURL( this.files[0] );
    }
}

el("asd").addEventListener("change", readImage, false);\

Its demo found here

【问题讨论】:

    标签: javascript image base64 local


    【解决方案1】:

    尝试利用 XMLHttpRequest() 将 responseType 设置为 Blob ,在 XMLHttpRequest onload 事件中使用 FileReader() 将响应读取为 data URI

    var xhr = new XMLHttpRequest();       
        xhr.open("GET", "/path/to/local/image/file", true); 
        xhr.responseType = "blob";
        xhr.onload = function (e) {
                console.log(this.response);
                var reader = new FileReader();
                reader.onload = function(event) {
                   var res = event.target.result;
                   console.log(res)
                }
                var file = this.response;
                reader.readAsDataURL(file)
        };
        xhr.send()
    

    【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2014-09-14
    • 2012-03-14
    • 2018-09-07
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多