Javascript 使用PostgreSql中的Base64字符串显示图像
我想显示一个来自PostgreSql数据库的图像。我的图像保存为postgre DB中的bytea 因此,我从php脚本中选择图像:Javascript 使用PostgreSql中的Base64字符串显示图像,javascript,php,postgresql,canvas,base64,Javascript,Php,Postgresql,Canvas,Base64,我想显示一个来自PostgreSql数据库的图像。我的图像保存为postgre DB中的bytea 因此,我从php脚本中选择图像: $img = pg_unescape_bytea($row[7]); $bs64 = base64_encode($img); 我看到“pg_unescape_bytea”是bytea类型的必填项,我将结果编码为base64 因此,我的Javascript客户端接收到一个base64字符串,我尝试在画布中显示它 var canvas = docu
$img = pg_unescape_bytea($row[7]);
$bs64 = base64_encode($img);
我看到“pg_unescape_bytea”是bytea类型的必填项,我将结果编码为base64
因此,我的Javascript客户端接收到一个base64字符串,我尝试在画布中显示它
var canvas = document.getElementById('canvasPrev');
var ctx = canvas.getContext('2d');
var imageData = ctx.createImageData(200, 200);
var pixels = imageData.data;
if (obj[i].image != null) {
var data = text2ua(obj[i].image);
var buffer = data;
for (var j = 0; j < buffer.length; j += 4) {
pixels[j] = buffer[j];
pixels[j + 1] = buffer[j + 1];
pixels[j + 2] = buffer[j + 2];
pixels[j + 3] = buffer[j + 3];
}
console.log(pixels);
ctx.putImageData(imageData, 0, 0);
}
var canvas=document.getElementById('canvasPrev');
var ctx=canvas.getContext('2d');
var imageData=ctx.createImageData(200200);
var像素=imageData.data;
if(obj[i].image!=null){
var数据=text2ua(obj[i].图像);
var缓冲=数据;
对于(变量j=0;j
和text2ua功能:
function text2ua(s) {
var ua = new Uint8Array(s.length);
for (var i = 0; i < s.length; i++) {
ua[i] = s.charCodeAt(i);
}
return ua;
}
功能文本2UA(s){
var ua=新的UINT8阵列(s.长度);
对于(变量i=0;i
我知道我的画布工作正常,因为我实现了以同样的方式显示图像,但这不是来自postgre DB
我的结果图像看起来像原始图像,但颜色不好,图像是半透明的
我得到的结果是:
我想要的是:
(维度实际上是相同的)明智的做法是不要将图像存储在数据库中。您可以尝试只构建一个图像,并将其用作图像源,而不是使用画布。
“数据:图像/png;base64,“+obj[i].图像
如果您需要它在画布中,请通过
我已经尝试过了,但是图像无效。。。obj[i]。图像等同于:明智的做法是不将图像存储在数据库中。您可以尝试只构建一个图像,并将其用作图像的源,而不是使用画布。'data:image/png;base64,“+obj[i].图像
如果您需要它在画布中,请通过
我已经尝试过了,但是图像无效。。。obj[i]。图像等于: