我使用Paper.js canvas作为源,使用一个简单的canvas作为目标。基本上是通过getImageData
复制可见图像的一部分,并使用putImageData
将其粘贴到目标canvas中。
粘贴的图像没有alpha通道。例如,当复制的区域只包括对象的一部分,其余部分应该是空的。我尝试为两个函数添加{ colorSpace: 'display-p3' }
,但我看到颜色空间仍然是srgb
,仍然没有alpha通道。
是否可以用getImageData
复制/粘贴图像数据,并保留Paper.js的alpha通道?
下面是复制/粘贴代码。
const rasterTemp = RasterObject.rasterize() // This to reset all the transformations.
const subRasterTemp = rasterTemp.getSubRaster(new data.$paper.Rectangle({
point: [0, 0], // These and other coordinates are just for the sake of demonstration
size: [100, 100],
}))
const imageData = subRasterTemp.getImageData(new data.$paper.Rectangle({
point: [0, 0],
size: [100, 100],
}), { colorSpace: 'display-p3' })
canvasTargetContext.putImageData(imageData, 0, 0)
2条答案
按热度按时间lc8prwob1#
我不能解释为什么这样做,但是一个解决方法是先在一个临时画布上绘制图像数据,然后在目标画布上绘制这个临时画布。
这里有一个fiddle演示了一个可能的解决方案。
iq3niunx2#
好吧,实际上不是这样的。透明度被保留了。我只是在视觉上得到了一个印象,它不是。但当我简单地将画布保存为图像时,我看到了透明度。