Почему .png, преобразованный из вывода постскриптума gnuplot, имеет прозрачный фон? - PullRequest
3 голосов
/ 11 сентября 2010

Я использовал gnuplot (4.2) для записи графика в файл postscript.Но когда я преобразую этот файл .ps в файл .png с помощью команды convert file.ps file.png, я получаю изображение в формате png без фона (прозрачное).

Почему это происходит, и как я могу получить изображение png с белым фоном?

Ответы [ 2 ]

4 голосов
/ 13 сентября 2010

«Почему это происходит?»

Две возможные причины объединения:

Первый: Ваш ввод PostScript, скорее всего, не содержит фона. По сути, это «прозрачно». При печати это выглядит как обычно. (Некоторые файлы PostScript имеют белый фон. И при печати это все равно выглядит как обычно. Вы обнаружите, что только когда вы пытаетесь ретроспективно добавить какой-либо водяной знак в «фон» файла, и когда это, кажется, не работает. В этих случаях штрихи водяного знака покрыты белой областью, которая снова покрыта оригинальным штрихованным содержимым PS ...)

Секунда: Команда convert a.ps a.png не выполняет работу сама. Он вызывает внешнюю 'делегат' вспомогательную программу, скорее всего, Ghostscript. И у Ghostscript есть разные способы настроить вывод PNG. Вы можете запросить Ghostscript о all его «устройствах» вывода следующим образом:

gs -h

Теперь ограничьте запрос только строками, содержащими устройства, связанные с PNG:

gs -h | grep png

Вы увидите, что есть pngalpha устройство вывода. Этот может выводить прозрачные пленки для изображений PNG.

Далее запрос convert о его полном списке делегатов:

convert -list delegate

Вы увидите несколько десятков команд, которые convert использует за вашей спиной, чтобы выполнить свою работу. Давайте посмотрим, какие команды он использует для обработки ввода или вывода PNG:

convert -list delegate | grep -i png

Вероятно, вы обнаружите gs ... -sDEVICE=pngalpha ... командные строки для некоторых типов преобразования.

«Как получить изображение PNG с белым фоном?»

Попробуйте это:

convert a.ps -background white a.png
0 голосов
/ 09 января 2012

Пипитас уже хорошо объяснил, почему это происходит.

Для решения вашей проблемы, то есть для получения белого фона, используйте параметр -alpha off в командной строке convert. Кроме того, полезно контролировать разрешение на выходе с помощью переключателя -density x. Следовательно, вы должны попробовать что-то вроде:

convert -density 300 -alpha off input.ps output.png

...