首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从uint8Array创建纹理(图像)

从uint8Array创建纹理(图像)
EN

Stack Overflow用户
提问于 2021-03-23 05:22:27
回答 1查看 50关注 0票数 0

我正在尝试从网络上的JPG到用uint8Array创建一个纹理。

我需要uint8Array,因为它是一个只接受该格式的应用程序接口。

为了获取数据,我使用responseType: "arraybuffer"请求数据。

代码语言:javascript
复制
      axios({
        method: 'get',
        url: imageString,
        responseType: 'arraybuffer'
      })
        .then(function (response) {
          const uintPic = new Uint8Array(response.data)
     }

这里是第一个问题:我应该如何获得图像的宽度和高度?我从示例中查找了下一步,但找不到。

然后我像这样设置像素:

代码语言:javascript
复制
    var width = 200;
    var height = 113;
    var channels = 4; // RGBA
    var pixels = width * height * channels;

    // I create a new Uint8Array with space to hold the Alpha channel
    var newData = new Uint8Array(pixels); 

    var s = 0;
    var d = 0;
    while (d < pixels) {
       newData[d++] = uintPic[s++];
       newData[d++] = uintPic[s];
       newData[d++] = uintPic[s];
       newData[d++] = 255;
       s++
    }

第二个问题是没有足够的信息来自uintPic,它的长度是2.784,而它应该至少有67.800 (宽*高*3个通道)。

我在浏览器中使用Blob测试了来自axios响应的数据,这些数据似乎足以创建一个图像:

代码语言:javascript
复制
// First the Blob:
const blob = new Blob(
    [new Uint8Array([uintPic])],
    { type: 'image/jpg' }
);

// Now the image.
const img = new Image();
img.src = URL.createObjectURL(blob);
document.body.appendChild(img);
EN

回答 1

Stack Overflow用户

发布于 2021-03-25 05:44:56

到目前为止,使用Jimp作为库是可行的:

代码语言:javascript
复制
      Jimp.read(url, function (err, image) {
          console.log("? ~ image.bitmap.data:", image.bitmap.data)
      });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66754021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档