【问题标题】:ppmtogiff: to many colors workaroundppmtogiff:多种颜色的解决方法
【发布时间】:2013-06-11 17:47:44
【问题描述】:

我正在编写一个脚本,该脚本采用 .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 吗?

【问题讨论】:

  • 为什么是 gif?试试pnmtopng。 Imagemagick 也可以处理 wxd。试试convert file.xwd file.gif
  • @FredrikPihl 这不是我的选择,我只是在修复别人代码中的错误
  • 你能说怎么事情没有工作吗?
  • @DonalFellows 好点,更新了问题

标签: tcl gif ppm quantization


【解决方案1】:

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

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

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

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

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

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

这些是由于pamdepth 在其标准错误通道上很健谈(某些程序就是这样)和Tcl 的exec 默认情况下将标准错误上的消息转换为错误消息这一事实相互作用而导致的一些小错误。这通常是正确的,但我们不希望它在这里。但是有一个简单的解决方法:

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

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

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

【讨论】:

  • 如果我要进行真正的转换,我会考虑直接使用pnmcolormappnmremap,如pnmquant manpage 中所述...
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 2022-10-16
  • 2014-04-01
  • 1970-01-01
  • 2013-10-17
  • 2014-03-18
  • 2020-08-27
  • 2011-11-17
相关资源
最近更新 更多