使用 uint16array 数据显示图像

display image by using uint16array data

我正在使用 XTK 库做一个 DICOM 项目。现在我需要根据输入的 DICOM 文件创建缩略图列表(输出图像可以是 PNG 或 JPG)。

在渲染过程中,XTK 在每个 DICOM 文件的 Uint16Array 中提供了一个像素数据数组。但我不知道如何将这些像​​素数据转换为 canvas.

我搜索了一些相关文章或问题,但没有找到。

如今,ImageData has become a constructor,您可以轻松地放置二维上下文。

它期望的参数是一个 UInt8ClampedArray,一个宽度和一个高度。

因此,从表示 rgba 像素数据的 Uint16Array 中,您只需要做

var data = your_uint16array;
var u8 = new Uint8ClampedArray(data.buffer);
var img = new ImageData(u8, width, height);
ctx.putImageData(img, 0,0);

但是根据你的截图,你得到的实际上是一个Uint16Array数组,所以你可能必须先将所有这些Uint16Arrays合并成一个。

另请注意,Uint16Array 是 rgba 像素数据的奇怪视图,Uint32Array 更传统(#ffff vs #ffffffff)。