如何使用Python Image Library保存图像

时间:2015-04-13 08:12:38

标签: 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')`

现在的重点是我想假装路径,文件名和文件类型的功能如下:

create_image(x=1000,y=10,path=C://Users/bsimon/Desktop/,filename=black,filetype=png)`

斗争开始了:

  1. 我找不到确切的语法如何将路径(filename,filetyp)传递给img.save函数

  2. 我使用与png不同的filetyp导致错误。行img.save('C://Users/User/Desktop/black.png')工作正常但是当我尝试使用img.save('C://Users/User/Desktop/black.bmp')代替时,程序我运行脚本(Blender)崩溃或陷入无限循环中。

1 个答案:

答案 0 :(得分:0)

认为你在寻找的是:

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")

传递你想要的任何参数(带有关键字),并且它将使用所有其他参数的默认值(就像你已经使用xy的默认值一样)。 / p>


请注意,您始终需要在Python中使用字符串文字的引号。你不能只写filename=black;这表示filename的默认值是全局变量black中的任何值(你可能没有,所以得到NameError),而不是字符串"black"

接下来,要将基本文件名(如"black"和扩展名"png")合并到一个完整的文件名中,Python没有这样做的功能,所以你必须手动完成,比如filename + '.' + filetype。但是要结合像C:/Users/bsimon/Desktop/这样的目录名和像"black.png"这样的文件名,Python 确实有一个函数os.path.join - 你应该使用它,因为它有一些棘手的边缘情况,否则你可能会出错。

你的问题#2似乎与你的问题#1完全无关,所以我不会在这里回答它;为此创建一个单独的问题。