ppmtogiff: для обхода многих цветов

Я работаю над сценарием, который берет образ.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?

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 ошибка исходит от!), но она делает для меня, когда я пытаюсь.

Другие вопросы по тегам