为了账号安全,请及时绑定邮箱和手机立即绑定

govips中多张图片的并行叠加

govips中多张图片的并行叠加

Go
当年话下 2022-11-28 17:17:25
在Govips中,是否有将多个图像并行叠加在基本图像上的功能?有一个函数 - compositeMulti 获取图像列表但它是否并行渲染它?此外,它是否能够识别必须在图像上渲染哪个图像的哪个像素,而不是迭代地遍历所有图像并一张一张地渲染。
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

libvips(govips 背后的图像处理库)是需求驱动的和水平线程的。正在计算的图像处理管道以图形表示,您 PC 上的每个线程在输出图像中选择一个图块(通常为 128 x 128 像素),并且线程独立地从图形的末端开始计算像素。

运算符(调用的composite东西compositeMulti)计算使用 PDF 样式混合模式叠加一组图层的结果。对于每个图块,它选择在该点可见的图层子集。它只能在选定的混合模式是“可跳过”的情况下执行此操作,即。在基本图像上合成黑色(空像素)将无效。

您可以在此处查看可跳过性测试:

https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L1273-L1296

层剔除循环在这里:

https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L443-L460

最后,选择的层被合成,如果可能的话使用矢量算法。它将 RGBA 像素表示为四个浮点数的向量,并将它们一起计算。

tldr:libvips composite 是线程化的、矢量化的,并且(如果可能的话)进行平铺可见性剔除。


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信