gpt4 book ai didi

python - 如何使用 Python PIL (Pillow) 将图像保存在特定文件目录中,而不会因 : save_handler = SAVE[format. upper() 而出现 KeyError]

转载 作者:行者123 更新时间:2023-12-01 09:15:47 42 4
gpt4 key购买 nike

我正在尝试从元素周期表的较大图像中裁剪特定元素,然后将它们保存在特定的文件目录中,该文件目录位于另一个文件夹内,并且该文件夹与程序位于同一文件目录中我正在尝试这样做。

我查看了另一个有关堆栈溢出的已回答问题,该问题与我的问题相似: How can I save an image with PIL?,但是该用户使用了“numpy”。我以前只在学校学习过 python 基础知识,现在正在利用空闲时间学习“tkinter”和现在的“PIL”(Pillow),我对这些 python 模块很陌生,并且正在努力掌握这两个模块的令人困惑的文档,我也不知道“numpy”是什么或如何使用它。

这是我尝试运行的代码:

#Saving G1 elements as their own image


from PIL import Image


Periodic_Table = Image.open("Periodic Table Bitmap.bmp")
G1_List = ["Hydrogen.bmp","Lithium.bmp","Sodium.bmp",
"Potassium.bmp","Rubidium.bmp","Caesium.bmp","Francium.bmp"]

starting_coords = (180,86,340,271)
for i in range(7):
y1 = 86 + (i * 187)
y2 = 86 + ((i+1)* 187) - 3
cropped_region = (180,y1,340,y2)
G1_Element = Periodic_Table.crop(cropped_region)
G1_Name = G1_List[i]
G1_Element.save(
"C:\\Users\\Kids\\Documents\\Robert\\Python Programming\\Periodic Table Quiz\\PIL Programs and Images\\Group 1 Elements"
, G1_Name)

我还尝试运行相同的代码,其中 G1_List 中的项目没有“.bmp”扩展名,但图像名称的格式如下:

#Saving G1 elements as their own image

from PIL import Image

Periodic_Table = Image.open("Periodic Table Bitmap.bmp")
G1_List = ["Hydrogen","Lithium","Sodium","Potassium","Rubidium","Caesium","Francium"]

starting_coords = (180,86,340,271)
for i in range(7):
y1 = 86 + (i * 187)
y2 = 86 + ((i+1)* 187) - 3
cropped_region = (180,y1,340,y2)
G1_Element = Periodic_Table.crop(cropped_region)
G1_Name = G1_List[i]
G1_Name_Formatted = ("%s" % (G1_Name)) + ".bmp"
G1_Element.save(
"C:\\Users\\Kids\\Documents\\Robert\\Python Programming\\Periodic Table Quiz\\PIL Programs and Images\\Group 1 Elements"
, G1_Name_Formatted)

在这两种情况下,我都会收到此错误消息:

save_handler = SAVE[format.upper()]
KeyError: 'HYDROGEN.BMP'

从我之前粘贴链接的帖子中,建议删除“.”来自“.bmp”,因此可以以大写形式识别扩展名,但这也不起作用。

任何解决方案将不胜感激,最好不使用其他模块,例如“numpy”,但是如果必须使用其中任何一个,我将不熟悉它们,并且需要向我解释答案中的代码完全,如果我想理解的话。

注意:我使用位图图像是因为我在某些Python文档中了解到,我计划与PIL(Pillow)一起使用的tkinter仅与位图图像兼容:https://pillow.readthedocs.io/en/5.2.x/reference/ImageTk.html

谢谢

最佳答案

您将文件名作为第二个参数传递给 Image.save

但是,第二个参数是(可选)文件格式 - 如果指定,它必须与注册的文件格式匹配,例如GIFBMPPNG、...

您可能想要做的是连接路径和图像名称 - 无需指定格式。

import os

...

# dir_path can be set outside of your loop
dir_path = "C:\\Users\\Kids\\Documents\\Robert\\Python Programming\\Periodic Table Quiz\\PIL Programs and Images\\Group 1 Elements"
...
G1_Name_Formatted = ("%s" % (G1_Name)) + ".bmp"
file_path = os.path.join( dir_path, G1_Name_Formatted )
G1_Element.save( file_path )

或者如果您想明确指定格式,请将最后一部分更改为:

G1_Element.save( file_path, "BMP" )

关于python - 如何使用 Python PIL (Pillow) 将图像保存在特定文件目录中,而不会因 : save_handler = SAVE[format. upper() 而出现 KeyError],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51268436/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com