從一個由9個較小的影像組成的影像,排列成一個3x3的網格,如
。AAA
BBB
CCC
我想自動生成所有可能的變化為.pngs,其中小圖片的位置很重要,沒有一個位置可以是空的,而且每個小圖片必須出現三次。我設法用Python得到了一個這些變化的串列:
from sympy.utilities.iterables import multiset_permutations
from pprint import pprint
pprint(list(multiset_permutations(['A','A','B'。 'B','B','C','C']))
結果有1680種變化:
[['A'/span>, 'A'/span>, 'A'/span>, 'B'/span>, 'B', 'B', 'C', 'C', 'C'] 。
['A', 'A, 'A', 'B', 'B', 'C', 'B', 'C', 'C'] 。
['A', 'A, 'A', 'B', 'B', 'C', 'C', 'B', 'C'] 。
['A', 'A/span>, 'A', 'B', 'B', 'C', 'C', 'C', 'B'] 。
['A', 'A, 'A', 'B', 'C', 'B', 'B', 'C', 'C'] 。
['A', 'A, 'A', 'B', 'C'/span>, 'B'/span>, 'C'/span>, 'B'/span>, 'C'/span>]。
...
['C'/span>, 'C'/span>, 'C'/span>, 'B', 'B', 'B', 'A', 'A', 'A'] ]
我怎樣才能將每一行的每個字母替換成各自的小圖片A.png、B.png和C.png,它們都是1000 x 1000 px的正方形,前三個相隔1000 px,下面還有兩行? 謝謝你的幫助!
uj5u.com熱心網友回復:
如果你有三個獨立的圖片(每個都在自己的檔案中),那么只是生成唯一的排列組合,并使用
的問題。montage -geometry 0 0 A.png B.png C.png B.png C.png A.png C.png A.png B.png ABCBCACAB.png
(實際上,如果輸出檔案是以排列組合命名的,你甚至不需要生成1680個唯一的,但這樣做會節省I/O...)
uj5u.com熱心網友回復:
由于你似乎很樂意使用Python來生成排列組合,我通過subprocesses模塊加入了ImageMagick的東西,但這是順序的,所以我加入了多行程。
這仍然是相當低效的,因為你正在生成1680個子行程,每個子行程都加載ImageMagick,并且每個子行程都讀取9張圖片。我想你可能想把你的3張圖片加載到Python中一次,然后在Python中生成你的蒙太奇......但這不是你所問的問題 問題和答案在StackOverflow上是免費的,所以你當然也可以問這個問題。
import subprocess
from multiprocessing import Pool
from sympy.utilities.iterables import multiset_permutations
def GenerateOne(f):
cmd = ['montage', '-geometry', ' 0 0']
for z in f。
cmd.append(f'{z}.png')
filename = ''.join(f) ' .png'.
cmd.append(filename)
# DEBUG print(' '.join(cmd))
subprocess.run(cmd)
if __name__ == '__main__'/span>:
# 創建一個行程池。
p = Pool()
# 創建一個要創建的蒙太奇的串列'A','A','A','B'。 'B','B','C','C','C'] )
將串列映射到池中
p.map(GenerateOne, perms)
這實際上產生了這樣的命令,你可以通過取消對DEBUG行的注釋看到:
這實際上產生了這樣的命令。
montage -geometry 0 0 C.png C.png C.png B.png B.png A.png A.png B.png A.png CCCBBAABA.png
montage -geometry 0 C.png C.png C.png B.png B.png A.png B.png A.png CCCBBABAA.png
montage -geometry 0 C.png C.png C.png B.png B.png A.png A.png CCCBBBAAA.png
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324950.html
標籤:
上一篇:在python中使用selenium的框連接用戶名和密碼
下一篇:從檔案中過濾黑名單的域名
