Возможно это оффтоп, но может у кого есть какие идеи.
Цель: автоматизировать оценку pdf файла на заполненность изображениями. Например файл из 100 страниц могут содержать 80 страниц просто текста, но другие 20 могут быть забиты по всей странице картинками. Это все для оценки стоимости печати.
UPD. С помощю команды
pdftoppm 1.pdf 1 -jpeg -f 4 -r 300 -singlefile
я получаю 4 страницу файла достаточного качества картинку, но можно ли как-то проанализировать уже этот один файл - jpg на заполненность либо по общей темности картинки либо по объему изображения на фоне общего файла?
UPD2 Командой
convert 1-0.jpg -fill black +opaque white -format "%[fx:mean*100]" info:
Я получаю процент белого фона, то есть незанятой изображением площади страницы. Но вот если страница будет серой, хот чуть чуть, оно всю страницу занесет в 100% заполненность. Ссе же лучше узнать общую темность изображения.
UPD2 - РЕШЕНИЕ ВОПРОСА.
На мой взгляд, самым лучшим вариантом оценки заполненности страницы это не указывать профиль, оно само по умолчанию берет CMYK, не пользоваться -sPageList=1,2 ибо не работает этот параметр, по крайней мере у меня, вместо него использовать два параметра: -dFirstPage=9 -dLastPage=9.
В итоге имеем вывд польностью заполненой черным страницы:
$ gs -q -dNOPAUSE -dBATCH -dFirstPage=9 -dLastPage=9 -sDEVICE=inkcov -o - 2.pdf
1.00000 1.00000 1.00000 1.00000 CMYK OK
Подсчет заливки страницы ведется по сумме четырех чисел. 1+1+1+1= 4.00000, что есть 100%
Всем спасибо.
UPD3 - Предыдущий вариант не вполне удачный, легкое заполнение может посчитать как полное. Решением является другой -sDEVICE, но обновленного GhostScript:
gs -q -dNOPAUSE -dBATCH -dFirstPage=1 -dLastPage=1 -sDEVICE=ink_cov -o - 2.pdf
Но тут зополненность идет уже в единицах на канал. Не 0.50000 но 50.0000. Также 100% - это уже не 400(4х100) но 300. Подробнее тут:
( читать дальше... )
Так же хорошим вариантом есть оценка заливки сбив все в серые цвета:
convert -density 25 2.pdf -colorspace rgb -alpha remove -format %[fx:100-100*mean.gray]%% info: > "/tmp/2"
Результат заливки искать в /tmp/2