2017-09-01 142 views
1

我已经将jpeg图像存储在mysql数据库中,格式为longblob ...现在我读取了longblob并想要检索jpeg图像以查看它的外观..我仅获取base64字符串,所以如何将它转换为mysql或节点js?NodeJS将Base64字符串转换为jpeg图像 - NodeJS或mysql

这里是从数据库中读取我的字符串的base64:

https:// jsfiddle.net/ ej4c9pk3/ 

如何进行译码后,JPEG图像,这样我可以看看它的样子,然后我可以在网页上显示。

图片base64文字位于链接...所以你可以看到它,并尝试它解码为jpeg。

+0

可能的[客户端Javascript中的Base64编码和解码]重复(https://stackoverflow.com/questions/2820249/base64-encoding-and-decoding-in-client-side-javascript) – pabrantes

+0

可能的重复[如何在HTML中显示Base64图像?](https://stackoverflow.com/questions/8499633/how-to-display-base64-images-in-html) – damd

+0

我认为这是不重复我需要从MySQL读取blob base64文本图像,然后将其保存到sqlite3数据库,以便它可以在sqlite3数据库中显示图像作为图像不是文本 – John

回答

0

我写的函数,将Base64字符串转换为Base64十六进制字符串,现在它被正确地转换为显示为BLOB png图像......但问题是当我在数据库浏览器中为SQLite打开字段时,它将此转换值写入文本,并必须写为二进制(以便图像将被识别并显示时,我选择图像在DB浏览器SQLIte ...所以问题是我怎么能Base64十六进制字符串插入SQLite3数据库为二进制?

这里是我的代码插入:

/* GET - channels_logo */ 
for (var i in rows) { 
    /* WRITE - table channels_logo */ 
    db.prepare('INSERT INTO channels_logo (logo_id, logo_channel, logo_png) VALUES 
    ("'+rows[i].id+'", "'+rows[i].channel+'", "'+(base64toHex(new Buffer(rows[i].logo).toString()))+'")').run(); 
}; 

function base64toHex(base64) { 
    /* DEFINE - variables */ 
    var raw = atob(base64); 
    var HEX = ''; 

    for (i = 0; i < raw.length; i++) { 
     var _hex = raw.charCodeAt(i).toString(16) 

     HEX += (_hex.length==2?_hex:'0'+_hex); 
    }; 
    return HEX.toUpperCase(); 
}; 

[![Using this insert code is inserted as Text:][1]][1] 

    https://i.stack.imgur.com/iZ2A1.jpg 

[![And needs to be binary inserted and now it looks ok (i just erase text and copy text inserted into binary and now it works)][1]][1] 


    https://i.stack.imgur.com/ZzGTU.jpg 

所以我看到的SQLite3显示插入Base64的十六进制为文本而不是二进制。 ..我需要写在插入语句插入它为二进制?

相关问题