0

我正在编写一个脚本,该脚本采用 .xwd 图像,在其上运行 wxdtopnm,然后将其通过管道传输到 ppmtogif。基本上:

exec wxdtopnm < file.xwd | ppmtogif > file.gif

但是,有时我会收到错误消息

ppmtogiff: to many colors - try doing a 'ppmquant 256'

好吧,我尝试了 ppmquant,长话短说,该选项不可用。我偶然发现了pamdepth并想尝试一下。但是,我找不到关于如何正确使用它的实际示例,而且我也不完全是 tcl 专家。

我试过

exec wxdtopnm < file.xwd | pamdepth 6 | ppmtogif > file.gif

但这没有用。我收到消息

Error: Invalid Command name "6"

有人可以举一个如何正确使用 pamdepth 的例子吗?

4

1 回答 1

2

不管发生了什么,它不可能完全是你写的:

exec wxdtopnm < file.xwd | pamdepth 6 | ppmtogif > file.gif

当我尝试做同样的事情时(出于我们的目的;我周围没有任何 XWD 图像):

exec pngtopnm sample.png | pamdepth 6 | ppmtogif >foo.gif

我没有收到您报告的错误。相反,我得到:

pamtogif:计算颜色图...
pamtogif:找到 121 种颜色

pamdepth这些是由于在其标准错误通道上很健谈(某些程序就是这样)和 Tclexec默认将标准错误上的消息转换为错误消息的事实的交互作用引起的微不足道的错误。这通常是正确的,但我们不希望它在这里。但是有一个简单的解决方法:

exec pngtopnm sample.png | pamdepth 6 2>/dev/null | ppmtogif >foo.gif

这会将标准错误pamdepth重定向到系统位桶,使管道的其余部分按预期工作。

我不能确定这是否对你有用(我真的不知道那个6错误来自哪里!)但是当我尝试时它对我有用。

于 2013-07-06T07:37:34.553 回答