gpt4 book ai didi

javascript - 是否可以从 base64 图像中读取像素数据?

转载 作者:数据小太阳 更新时间:2023-10-29 05:26:54 25 4
gpt4 key购买 nike

所以这里我有一个 base64 编码的 png 图像:

iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==

然后我用 atob() 解码了它.结果是:

PNG

IHDRo&åIDAT×cøÿÿ?Ã Ã Ð1ñXÍõ5ËÑIEND®B`

是否可以从这个字符串中取出颜色值? (不使用 <canvas> )

PS: 好像可以,因为我找到了demo:
http://labs.calyptus.eu/JSBin/Demo/Viewer.html
但我不确定他是怎么做到的。

最佳答案

在您指向的页面的源代码中,有一个函数使用 PNG.js 和其他一些实用程序来执行您想要的操作:

function show(data){
var png = new PNG(data);
var img = document.getElementById('image'), limg = document.getElementById('largeimage');
document.getElementById('nativeimage').src = 'data:image/png;base64,' + data;
img.innerHTML = '';
limg.innerHTML = '';
img.style.width = png.width + 'px';
img.style.height = png.height + 'px';
limg.style.width = (png.width * 3) + 'px';
limg.style.width = (png.height * 3) + 'px';
var line;
while(line = png.readLine())
{
for (var x = 0; x < line.length; x++){
var px = document.createElement('div'), px2 = document.createElement('div');
px.className = px2.className = 'pixel';
px.style.backgroundColor = px2.style.backgroundColor = '#' + line[x].toString(16).padRight('0', 6);
img.appendChild(px);
limg.appendChild(px2);
}
}
}

如果您查看此函数中的循环,您会注意到它正在逐行读取 PNG 并绘制像素。

一个简化的例子是:

var png = new PNG(data); // data is the base64 encoded data
var line;
var y = 0;
while(line = png.readLine())
{
for (var x = 0; x < line.length; x++){
var pixel = doSomethingWithPixelData(x, y, '#' + line[x].toString(16).padRight('0', 6));
}
y++;
}

function doSomethingWithPixelData(x, y, color) {
// guess what? do something with pixel data here ;)
}

关于javascript - 是否可以从 base64 图像中读取像素数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813162/

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