You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中垂直读取Bitmatrix异常,图像显示错乱求助

垂直读取Bitmatrix转置后图像错乱问题

我正在制作一个网站,需要实现以下功能:

  • 图片上传
  • 将图片调整为32×128尺寸
  • 通过抖动或阈值滤镜转换为十六进制Bitmatrix

测试时使用image2cpp工具验证,水平读取Bitmatrix可以显示正确的图像:

正确的水平图像

水平读取的工作代码

// 工作代码:从画布获取图像
matrix = Array.from({ length: height }, (_, i) =>
  Array.from({ length: width }, (_, j) =>
    ctx.getImageData(j, i, 1, 1).data[0] > 0 ? 1 : 0
  )
);

// 将二进制转换为十六进制
return matrix
  .reduce((acc, row) => {
    acc += row.reduce((acc, value) => {
      acc += value > 0 ? "1" : "0";
      return acc;
    }, "");
    return acc;
  }, "")
  .match(/.{1,8}/g)
  .map((byte) => "0x" + parseInt(byte, 2).toString(16));

现在我需要垂直读取Bitmatrix,尝试转置矩阵后再转换为十六进制,但结果图像出现旋转且错乱,本该和水平读取的图像一致:

垂直读取结果

不工作的垂直读取代码

// 垂直读取:无法正常工作
matrix = Array.from({ length: height }, (_, i) =>
  Array.from({ length: width }, (_, j) =>
    ctx.getImageData(j, i, 1, 1).data[0] > 0 ? 1 : 0
  )
);

// 新增的转置代码
matrix[0].map((_, colIndex) => matrix.map(row => row[colIndex]));

// 后续转换逻辑和上方一致
return matrix
      .reduce((acc, row) => {
       // 此处省略相同的转换代码
       ....
      }

内容的提问来源于stack exchange,提问作者Markus Petzke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:12