【问题标题】:NodeJS converting Base64 String To jpeg image - NodeJS or mysqlNodeJS 将 Base64 字符串转换为 jpeg 图像 - NodeJS 或 mysql
【发布时间】:2017-09-03 15:37:57
【问题描述】:

我已将 jpeg 图像以 longblob 格式存储在 mysql 数据库中...现在我读取了该 longblob 并想检索 jpeg 图像以查看它的外观..我只得到 base64 字符串所以如何在 mysql 或节点中转换它js?

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

https:// jsfiddle.net/ ej4c9pk3/

如何将其解码为 jpeg 图像,以便我可以看到它的外观,然后我可以将其显示在网页上。

图片 base64 文本在链接上...所以您可以看到它并尝试将其解码为 jpeg。

【问题讨论】:

标签: javascript mysql node.js image


【解决方案1】:

我编写了将 Base64 字符串转换为 Base64 十六进制字符串的函数,现在它可以正确转换为显示为 BLOB png 图像...但问题是当我在 DB Browser 中为 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 十六进制显示为文本而不是二进制...我需要在插入语句中写什么才能将其插入为二进制?

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2021-08-31
    • 2018-09-07
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多