如何使用Python图像库保存图像
我是Python的初学者,所以这个问题可能很愚蠢,但不幸的是,我自己无法解决 使用以下脚本,我想创建一个黑色图像并将其保存在以下路径下:C://Users/User/Desktop/black.png如何使用Python图像库保存图像,python,image,python-imaging-library,Python,Image,Python Imaging Library,我是Python的初学者,所以这个问题可能很愚蠢,但不幸的是,我自己无法解决 使用以下脚本,我想创建一个黑色图像并将其保存在以下路径下:C://Users/User/Desktop/black.png def create_file(x=1000,y=10): img = Image.new('RGB', (x,y), "black") #creates a new black image img.save('C://Users/User/Desktop/black.png')`
def create_file(x=1000,y=10):
img = Image.new('RGB', (x,y), "black") #creates a new black image
img.save('C://Users/User/Desktop/black.png')`
现在的重点是,我想用如下函数来模拟路径、文件名和文件类型:
create_image(x=1000,y=10,path=C://Users/bsimon/Desktop/,filename=black,filetype=png)`
于是斗争开始了:
img.save('C://Users/User/Desktop/black.png')
工作正常,但当我尝试使用img.save('C://Users/User/Desktop/black.bmp')
时(例如,我使用(Blender)运行脚本的程序崩溃或陷入无休止的循环)def create_image(x=1000, y=10, path="C:/Users/bsimon/Desktop/",
filename="black", filetype="png"):
img = Image.new('RGB', (x,y), "black")
fullpath = os.path.join(path, filename + '.' + filetype)
img.save(fullpath)
然后你可以这样称呼它:
create_image(filename="empty")
传递您想要的任何参数(带有关键字),它将为所有其他参数使用默认值(就像您已经为x
和y
使用默认值一样)
注意,在Python中,字符串文本周围总是需要引号。你不能只写
filename=black
;也就是说,filename
的默认值是全局变量black
中的任意值(您可能没有,因此得到的是namererror
),而不是字符串“black”
接下来,要将一个基本文件名(如“black”
和一个扩展名(如“png”
)组合成一个完整的文件名,Python没有这样做的功能,因此必须手动操作,如文件名+'.+filetype
。但是,要将目录名(如C:/Users/bsimon/Desktop/
和文件名(如“black.png”
)组合在一起,Python确实有一个函数,-您应该使用它,因为如果不这样做,您可能会遇到一些棘手的边缘问题
你的问题2似乎与你的问题1完全无关,所以我不会在这里回答;为此创建一个单独的问题。好的,第一个问题是您忘记了
路径
、文件名
和文件类型
的默认值周围的引号,因此您的def
语句可能会给您一个名称错误
或类似错误。但是,如果你向我们展示你尝试过的代码并解释我们的问题,而不是试图描述它并告诉我们它不起作用,那就太好了。另外,不要试图在一个问题中问两个无关的问题(除了在同一个程序中发生的问题)。如果语法不正确,我甚至不确定你是如何解决第二个问题的,但这可能意味着你可以编写一个很好的示例程序来演示第二个问题,这意味着你可以为它编写一个很好的单独问题。假设path='C://Users/bsimon/Desktop'
,filename='black'
,和filetype='png'
然后img.save(os.path.join(path,filename+os.extsep+filetyp)
应该适用于受支持的filetyp
s.@abarnert-thansk以获得您的帮助。我遇到了第二个问题,因为在之前我刚刚使用了“严格”行img.save('C://Users/User/Desktop/rainbow.png'))
成功了。因此我将文件的结尾改为.bmp
,以获得不同的文件类型。但我明白你要写一个单独的问题的意思&我会这样做的。@martineau谢谢,它可以工作:)关于第二个问题的一个简短说明:这可能是关于如何配置PIL/Pillow的问题(特别是如果您实际上使用的是旧的PIL而不是现代的Pillow),那么请务必准确地解释一下您是如何安装它的(例如,“我下载了Pillow-2.8.1-cp33-none-win32.whl并安装了它”或“我运行了pip-install-Pillow
,看起来我有2.8.0版”或者随便什么。嘿,太感谢你了!现在一切都正常了。我的误解是一方面是引号,另一方面是fullpath与os.path.join结合的语法:)很抱歉把两个问题放在一起。@RothWar:没问题。这里的帮助确实值得一读,它比大多数网站都好,而且他们在不断改进,但大多数人都是通过反复试验来学习的,只要你愿意学习(而不是为自己的错误辩护),没有人会真正嫉妒你…