LINUX.ORG.RU

Создание djvu

 ,


2

2

Нужно было подчистить djvu-скан.

Извлекал по странице в формате ppm с помощью ddjvu. Изменял. Создавал опять djvu-файл программой c44 и потом сшивал файлы в один.

Дело в том, что размер (занимаемый на диске) итогового djvu-файла оказался в 10 раз больше, чем размер исходного.

В чём может быть дело?


#!/bin/bash
#
# any2djvu-bw
#

if [ -z `which anytopnm` -o -z `which ppmtopgm` -o -z `which pgmtopbm`\
-o -z `which cjb2` ]; then
usage
echo "Error: anytopnm, ppmtopgm, pgmtopbm and cjb2 are needed"
echo
exit 1
fi

shopt -s extglob

# DEFMASK="*.jpg"
DEFMASK="*.jpg"
DPI=150
# uncomment the following line to compile a bundled DjVu document
OUTFILE="#0-bw.djvu"

function usage() {
echo
echo "usage:"
echo
echo "$0 [\"REGEXP\"]"
echo " converts single pages with the default mask $DEFMASK (or REGEXP if provided)"
echo " in the current directory to single-page black and white djvu documents"
# uncomment the following line to compile a bundled DjVu document
echo " and bundles them as a djvu file $OUTFILE"
echo
}

if [ -n "$1" ]; then
MASK=$1
else
MASK=$DEFMASK
fi

for i in $MASK; do
if [ ! -e $i ]; then
usage
echo "Error: current directory must contain files with the mask $MASK"
echo
exit 1
fi
if [ ! -e $i.djvu ]; then
echo "$i"
anytopnm $i | ppmtopgm | pgmtopbm -value 0.499 > $i.pbm
# in netpbm >= 10.23 the above line can be replaced with the following:
# anytopnm $i | ppmtopgm | pamditherbw -value 0.499 > $.pbm
cjb2 -dpi $DPI $i.pbm $i.djvu
rm -f $i.pbm
fi
done

# uncomment the following line to compile a bundled DjVu document
djvm -c $OUTFILE $MASK.djvu
science ★★☆
()
Ответ на: комментарий от science

Странички цветные, вот в чём всё дело...

Не надо мне их в pbm перегонять.

Мне интересно, почему 60 килобайтный одностраничный DJVU-файл после перевода в PPM и обратно в DJVU начинает занимать полмегабайта.

kike
() автор топика

Нужно было подчистить djvu-скан. Извлекал по странице с помощью непонятной программы... Итоговый djvu-файл оказался в 10 раз больше исходного.

А в это время хомячки с помощью gscan2pdf открыли (импортировали), почистили и упаковали обратно в djvu несколько десятков сканов...

Чувство Элитарности... стоит ли оно не выполненной работы?

Old_Hamster ★★★
()
Ответ на: комментарий от kike

Мне интересно, почему 60 килобайтный одностраничный DJVU-файл после перевода в PPM и обратно в DJVU начинает занимать полмегабайта.

Потому что в исходном варианте он был разбит на foreground и background, оба они были сжаты наиболее эффективным алгоритмом и засунуты в один файл. c44 --- это более продвинутый аналог jpegа, для него в чистой картинке дофига спектральных составляющих, поэтому он для картинок с чёткими линиями (буквы, чертежи, и т.п.) даёт или гигантские файлы, или высокие частоты там пропадают и картинка обратно становится крайне грязной.

dn2010 ★★★★★
()
Ответ на: комментарий от dn2010

Потому что в исходном варианте он был разбит на foreground и background, оба они были сжаты наиболее эффективным алгоритмом и засунуты в один файл.

Посмотрел в djview, отключая те или иные слои. Ты прав, чёрт возьми!

kike
() автор топика
Ответ на: комментарий от Old_Hamster

А в это время хомячки с помощью gscan2pdf открыли (импортировали), почистили и упаковали обратно в djvu несколько десятков сканов...

Сомнительное заявление. Я тут заметил, что проглядел опцию у ddjvu, которая позволяет извлекать отдельные слои. Вынул foreground и собрал в другой документ. Одна строчка на баше. Думаете, хомяки с помощью гуёвой софтины справятся быстрее даже с одним документом?

Чувство Элитарности... стоит ли оно не выполненной работы?

У меня и ЧЭ появилось, и работу сделал. :)

kike
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.