我想使用 ImageMagick 在透明畫布上疊加多個不同大小的 PNG 影像。首先我創建了一個固定大小的透明畫布,比如
convert -size 1500x1000 canvas:transparent PNG32:canvas.png
然后我回圈我的影像以將每個影像添加到畫布
convert canvas.png nthimage.png -gravity Center -geometry xResxYres xcoord ycoord -composite canvas.png
這作業正常,但我可能會覆寫多達 10 張圖片,并且我對數千個 n 元組影像執行此操作,因此將不勝感激更快的解決方案。所以我的問題是:我是否也可以一步完成此操作,而不是先創建畫布,然后一次添加單個影像?
編輯:我在 macOS 10.15.7 上使用 ImageMagick 7.0.11-13。我從 python 腳本中運行 ImageMagick,因此可以根據需要生成包含輸入檔案串列的檔案。為了具體,說我的輸入檔案file_1.png達到file_n.png同尺寸A1xB1高達AnxBn,應在坐標放置 X1 Y1多達 Xn Yn相對于畫布和輸出檔案的核心是output.png,應該有大小1500x1000。
uj5u.com熱心網友回復:
我真的不建議從 Python 中洗掉子行程來呼叫 ImageMagick 數千次。您最終只會為每個影像包含過多的行程創建開銷,如果您已經在運行可以“在內部”進行影像處理的 Python,這將毫無意義。
我建議您直接從 Python 使用 PIL 或 OpenCV,并且由于您的 Mac 肯定是多核的,因此我建議您也使用多處理,因為處理數千張影像的任務是微不足道的并行化。
由于您并未真正說明元組的實際外觀,也未說明如何確定輸出檔案名,因此我只能在此答案中向您指出方法 7 和 8 。
您對每個影像的處理功能需要創建一個新的透明影像,然后使用以下命令打開并粘貼其他影像:
from PIL import Image
canvas = Image.new('RGBA', SOMETHING)
for overlay in overlays:
im = Image.open(overlay)
canvas.paste(im, (SOMEWHERE))
canvas.save(something)
檔案在這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388845.html
下一篇:每批大類的采樣和小類的增強
