擅长:python、mysql、java
<p>您正在打开新图像n^2次。这使得它非常慢</p>
<p>在执行for循环之前,应该先预加载这些图像</p>
<pre><code>grass_1 = Image.open(file_path + 'grass_1.png')
grass_2 = Image.open(file_path + 'grass_2.png')
...
for i in range(x_tile_amount):
for j in range(y_tile_amount):
dice_roll = random.randint(1, 7)
if dice_roll == 1:
etc.
</code></pre>
<p>你可以做的另一件事是把你的照片设置成dict</p>
<pre><code>my_dict = {
1: 'grass_1',
2: 'grass_2',
...
}
</code></pre>
<p>那你就这么做吧</p>
<pre><code>dice_roll = random.randint(1,7)
new_im.paste(my_dict[dice_roll], (i*x_tile_size,j*y_tile_size))
</code></pre>
<p>试试看这是否对你的时间有帮助</p>
<p>主要的问题是,当你生成一张100x100的地图时,你要加载10000次图像。没有理由加载相同的7个图像文件10k次,所以您只需预加载它们并根据需要添加</p>