gpt4 book ai didi

javascript - Node.js 如何从 MS Sql 服务器数据类型的 varbinary 转换为图像

转载 作者:行者123 更新时间:2023-11-30 11:45:46 24 4
gpt4 key购买 nike

我正在访问第三方数据库,其中 varbinary 列中存储有图像。我正在编写 Node.js 应用程序来将 MS Sql 服务器中存储的 varbinary 图像恢复到 .jpg 文件中。

当我查询 varbinary 作为缓冲区返回时,但从缓冲区中我无法将图像恢复到 .jpg 文件中。

对于 MS Sql 服务器访问,我正在使用 https://www.npmjs.com/package/mssql库。

[更新:]:以下是我尝试转换并另存为图像的一些方法。

var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'base64');
var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'hex');
var decodedImage = new Buffer(varbinaryBufferReturedFromDatabase, 'uft8');
var decodedImage = varbinaryBufferReturedFromDatabase.toString('hex');
var decodedImage = varbinaryBufferReturedFromDatabase.toString('base64');
var decodedImage = varbinaryBufferReturedFromDatabase.toString('uft8');

fs.writeFile(__dirname+'/../public/images/img3.jpg', decodedImage, function(err, data){
if (err) throw err;
console.log('It\'s saved!');
cb(data);
});

最佳答案

已解决这很困难,直到我研究了编码/解码和 varbinary 的工作原理。

解决方案:图像存储为 Sql 服务器中 Base64 编码字符串的十六进制数字表示形式,数据类型为 varbinary。在获取记录时,node.js mssql 库将十六进制数字转换为 javascript 缓冲区(该缓冲区是 base64 编码的字符串,而不是实际图像)。然后我将此缓冲区转换回 Base64 编码的图像字符串,例如..

var originalBase64ImageStr = new Buffer(resultSet[0].Image).toString('utf8');

然后创建转换回实际图像缓冲区,例如..

var decodedImage = new Buffer(originalBase64ImageStr , 'base64')

fs.writeFile(__dirname+'/../public/images/img3.jpg', decodedImage, function(err, data){
if (err) throw err;
console.log('It\'s saved!');
cb(data);
});

注意: Node.js mssql 库对于 varbinary 的字符串表示(返回的缓冲区是原始字符串的表示,因此不需要遵循上述步骤)和 varbinary 的图像/文档表示(返回的缓冲区)的工作方式不同是base64编码字符串的表示,需要遵循上述步骤)。

关于javascript - Node.js 如何从 MS Sql 服务器数据类型的 varbinary 转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41042527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com