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