在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 是線程化的、矢量化的,并且(如果可能的話)進行平鋪可見性剔除。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消