Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python图像库保存图像_Python_Image_Python Imaging Library - Fatal编程技术网

如何使用Python图像库保存图像

如何使用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')`

我是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)`
于是斗争开始了:

  • 我找不到将路径(文件名、文件类型)传递到img.save函数的确切语法

  • 我使用了不同于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:没问题。这里的帮助确实值得一读,它比大多数网站都好,而且他们在不断改进,但大多数人都是通过反复试验来学习的,只要你愿意学习(而不是为自己的错误辩护),没有人会真正嫉妒你…