将图像二进制数据转化为img标签 [英] turn image binary data into img tag

查看:1635
本文介绍了将图像二进制数据转化为img标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我向一条路线发出一个发布请求时,我有

  / generate / image 

我得到类似于:var file =

     JFIF  C  C      $ b $b     + }Yϭ F39M>         >   ;   '  uX' w ڤx\- [2g  k S   H   m
[ V?[_W # v } 6 [ F F % n ...

在客户端我:

  var blob = new Blob([file],{type:'image / png'}); 
var reader = new FileReader();

reader.onload = function(e){
$('#result')。attr('src',e.target.result);
};

reader.readAsDataURL(blob);

但我得到一个损坏的图像



我可以做什么?



编辑:
如果我这样做

pre $ code> img.src ='data:image / png; base64,'+ btoa(file);

我得到:

 未捕获InvalidCharacterError:无法在'Window'上执行'btoa':要编码的字符串包含Latin1范围之外的字符。 


解决方案

在您的后端,您可以执行以下操作:

  var fs = require('fs'); 
fs.readFile(你的文件的路径'base64',function(err,buf){
/ *)这里你可以发送你的base64图像数据到客户端,你的base64数据是buf。
我正在使用套接字,您可以发送。阅读更多关于readFile函数* /
socket.emit('image upload',{image:true,buffer:buf});
} );

当我的客户端从套接字接收数据时,我调用一个函数:

  socket.on('image upload',function(data){
displayImage(data);
});

var displayImage = function(data){
var URL ='data:image / jpg; base64,'+ data.buffer;
document.querySelector('#img-id')。src = URL;
};

然后图像将显示在img标签中。
希望这对您有用。


When i do a post request to a route i have

/generate/image

i get something like: var file =

����JFIF��C��C��� ��    
�����+�}Yϭ�F39M>���������>���;��ˋ��uXʽ�w�ڤx\-[2g��k�S���H���m
[�V?[_W����#��v��}6�[��F�F�%����n�...

in the client i do:

var blob = new Blob([file], {type: 'image/png'});
var reader = new FileReader();

reader.onload = function (e) {
   $('#result').attr('src', e.target.result);
};

reader.readAsDataURL(blob);

but i get a corrupt image

what can i do?

EDIT: if i do

img.src = 'data:image/png;base64,' + btoa(file);

i get:

Uncaught InvalidCharacterError: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.

解决方案

At your backend you can do following:

var fs = require('fs');
fs.readFile(path to image from you file, 'base64', function(err, buf){
      /* Here you can send your base64 image data to client. Your base64 data is in buf. 
      I am using socket. You can just send. Read more about readFile function*/
      socket.emit('image upload', { image: true, buffer: buf });
});

As my client receives data from socket, I call a function:

socket.on('image upload', function(data){
                displayImage(data);
            });

var displayImage = function(data){
                var URL = 'data:image/jpg;base64,'+data.buffer;
                document.querySelector('#img-id').src = URL;
            };

The image will then be showed in img tag. Hope this works for you.

这篇关于将图像二进制数据转化为img标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆