<p>要将PIL图像保存到文件中,必须使用<a href="http://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save" rel="nofollow noreferrer">^{<cd1>}</a>方法。要使其正确工作,有两件事很重要:</p>
<ol>
<li><p>文件必须以二进制模式打开。在</p>
<p>这意味着您必须在中更改<code>w</code>文件模式</p>
<pre><code>filedialog.asksaveasfile(filetypes=(("Portable Network Graphics (*.png)", "*.png"),
("All Files (*.*)", "*.*")),
mode='w',
defaultextension='.png')
</code></pre>
<p>像这样<code>wb</code>:</p>
<pre><code>filedialog.asksaveasfile(filetypes=(("Portable Network Graphics (*.png)", "*.png"),
("All Files (*.*)", "*.*")),
mode='wb',
defaultextension='.png')
</code></pre></li>
<li><p>PIL需要知道您希望以哪种格式保存图像。可以从文件扩展名中提取格式,如下所示:</p>
<pre><code>filename = f.name
extension = filename.rsplit('.', 1)[-1]
</code></pre></li>
</ol>
<p>把这些放在一起:</p>
<pre><code>f = filedialog.asksaveasfile(filetypes=(("Portable Network Graphics (*.png)", "*.png"),
("All Files (*.*)", "*.*")),
mode='wb',
defaultextension='.png')
if f is None:
return
filename = f.name
extension = filename.rsplit('.', 1)[-1]
img.save(f, extension)
f.close()
</code></pre>