首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3和Wand:尝试保存新映像时的ValueError

Python3和Wand:尝试保存新映像时的ValueError
EN

Stack Overflow用户
提问于 2014-08-22 10:43:08
回答 1查看 1.3K关注 0票数 0

我有一个由颜色、名称和值组成的文件。

代码语言:javascript
复制
foo,(255, 212, 201),#FFD4C9
bar,(248, 201, 189),#F8C9BD
baz,(167, 145, 138),#A7918A

我想把它变成200‘m×200’m色块(也就是那个颜色的矩形),名为foo.gifbar.gif等等。我尝试用Python 3中的Wand来做这件事,但是我没有运气。

代码语言:javascript
复制
SIZE = 200
with open("foo.txt") as f:
    for line in f:
        if line[0] != "#":
            (name, _, hex_color) = tuple(line.strip().split(","))
            hex_color = hex_color.lower()
            print("{}, {}".format(name, hex_color))

            image_name = "{}.gif".format(name)
            with Drawing() as draw:
                # set draw.fill_color here?
                draw.rectangle(left=0, top=0, width=SIZE, height=SIZE)
                with Image() as image:
                    draw(image)
                    image.format = 'gif'
                    image.save(filename=image_name)

给我

代码语言:javascript
复制
Traceback (most recent call last):
  File "color_swatches.py", line 36, in <module>
    image.format = 'PNG'
  File "/usr/local/lib/python3.4/site-packages/wand/image.py", line 2101, in format
    raise ValueError(repr(fmt) + ' is unsupported format')
ValueError: 'gif' is unsupported format

我还尝试将其保存为jpegjpgpngPNG,但都没有效果。也许是我在凌晨4点25分做这件事的原因。

编辑:我能够用下面的bash脚本完成任务,

代码语言:javascript
复制
#!/bin/bash
while IFS=, read name _ hex
do
    convert -size 200x200 xc:white -fill $hex -draw "rectangle 0,0 200,200" \
        swatches/$name.gif
done < $1

但是我仍然很好奇我对Wand做错了什么。基于省略xc:<color>导致bash脚本失败的问题,我认为添加一行

代码语言:javascript
复制
image.background_color = Color("#fff")

with Image() as image:行可能工作之后,但是唉,我得到了一个新的错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "color_swatches.py", line 38, in <module>
    image.background_color = Color("#fff")
  File "/usr/local/lib/python3.4/site-packages/wand/image.py", line 419, in wrapped
    result = function(self, *args, **kwargs)
  File "/usr/local/lib/python3.4/site-packages/wand/image.py", line 1021, in background_color
    self.raise_exception()
  File "/usr/local/lib/python3.4/site-packages/wand/resource.py", line 218, in raise_exception
    raise e
wand.exceptions.WandError: b"wand contains no images `MagickWand-2' @ error/magick-image.c/MagickSetImageBackgroundColor/9541"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-12 17:10:12

第一个错误有点误导,但第二个信息是正确的。Image()构造函数分配魔杖对象,但不分配新图像。正如bash脚本调用-size 200x200一样,您需要在Image()中定义width= & height=

代码语言:javascript
复制
with Drawing() as draw:
  # set draw.fill_color here? YES
  draw.fill_color = Color(hex_color)
  draw.rectangle(left=0, top=0, width=SIZE, height=SIZE)
  with Image(width=SIZE,height=SIZE) as image:
    draw(image)
    image.format = 'gif'
    image.save(filename=image_name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25445155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档