DjVu/Weiterführende Informationen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
(cooles Skript zum Erstellen von DjVu-Bildern) |
||
Zeile 1: | Zeile 1: | ||
== Script zum Konvertieren vom Bildern == | |||
<bash>#!/bin/sh | |||
# This script helps to convert images into DjVu files. | |||
# OPTIONS | |||
# | # -s <N> scale factor for mkbitmap (default=2) | ||
# | # -d create a darker results by combining high-pass filtered image | ||
# | # with a simple by thresholding created bi-tonal image | ||
# | # -c try to preserve the color of the background (currently results have low quality) | ||
# You need these Debian/Ubuntu packages to use the script: | |||
# sudo apt-get install djvulibre-bin imagemagick mktemp netpbm potrace | |||
scale="-s2" | |||
while getopts "dcs:" opt | |||
do | |||
case "$opt" in | |||
s) scale="-s"${OPTARG};; | |||
d) doubledjvu=1;; | |||
c) color=1 | |||
esac | |||
done | |||
shift $(($OPTIND - 1)) | |||
# make sure that the file exists | |||
if [ -f "$1" ] | |||
then | |||
image=`basename "$1"` | |||
image=`echo -n "$image" | sed 's/\.[a-zA-Z]*$//'` | |||
else | |||
echo 1>&2 "Image $1 does not exist." | |||
exit 1 | |||
fi | |||
TEMPDIR=`/bin/mktemp -d` | |||
if [ $color ] | |||
then | |||
# a color background implies "-s 1" | |||
scale="-s1" | |||
fi | |||
image=`basename "$1"` | |||
image=`echo -n "$image" | sed 's/\.[a-zA-Z]*$//'` | |||
PPM=$TEMPDIR/image.ppm | |||
PBM=$TEMPDIR/bw.pbm | |||
# convert image (any format) into PPM | |||
/usr/bin/convert "$1" "$PPM" | |||
if [ $doubledjvu ] | |||
then | |||
# A "double DjVu" is an overlay two parts: | |||
# the (usual) highpass filtered image | |||
# an only by thresholding created bitonal image | |||
/usr/bin/mkbitmap $scale -n $PPM -o "$TEMPDIR/a.pbm" | |||
/usr/bin/mkbitmap $scale $PPM -o "$TEMPDIR/b.pbm" | |||
/usr/bin/pnmarith -multiply "$TEMPDIR/a.pbm" "$TEMPDIR/b.pbm" > $PBM | |||
else | |||
# make bitonal PBM image | |||
/usr/bin/mkbitmap $scale $PPM -o $PBM | |||
fi | |||
# encode the PBM image into DjVu | |||
/usr/bin/cjb2 -lossy $PBM "$image.djvu" | |||
# some special treatment in case of a color background | |||
if [ $color ] | |||
then | |||
MASK=$TEMPDIR/mask.djvu | |||
mv "$image.djvu" $MASK | |||
/usr/bin/djvumake "$image.djvu" Sjbz=$MASK PPM="$PPM" | |||
fi | |||
rm -rf "$TEMPDIR" | |||
</bash> | |||
== Test == | == Test == | ||
Ein Test mit 227 Seiten aus dem Amtsblatt Schleswig 1870. Es handelt sich um farbige Fotografien, die als jpg-Dateien der Größe 1600x1200 Pixel vorliegen. | Ein Test mit 227 Seiten aus dem Amtsblatt Schleswig 1870. Es handelt sich um farbige Fotografien, die als jpg-Dateien der Größe 1600x1200 Pixel vorliegen. |
Version vom 4. Dezember 2008, 09:24 Uhr
Script zum Konvertieren vom Bildern
<bash>#!/bin/sh
- This script helps to convert images into DjVu files.
- OPTIONS
- -s <N> scale factor for mkbitmap (default=2)
- -d create a darker results by combining high-pass filtered image
- with a simple by thresholding created bi-tonal image
- -c try to preserve the color of the background (currently results have low quality)
- You need these Debian/Ubuntu packages to use the script:
- sudo apt-get install djvulibre-bin imagemagick mktemp netpbm potrace
scale="-s2"
while getopts "dcs:" opt do
case "$opt" in s) scale="-s"${OPTARG};; d) doubledjvu=1;; c) color=1 esac
done shift $(($OPTIND - 1))
- make sure that the file exists
if [ -f "$1" ] then
image=`basename "$1"` image=`echo -n "$image" | sed 's/\.[a-zA-Z]*$//'`
else
echo 1>&2 "Image $1 does not exist." exit 1
fi
TEMPDIR=`/bin/mktemp -d`
if [ $color ] then
# a color background implies "-s 1" scale="-s1"
fi
image=`basename "$1"` image=`echo -n "$image" | sed 's/\.[a-zA-Z]*$//'`
PPM=$TEMPDIR/image.ppm PBM=$TEMPDIR/bw.pbm
- convert image (any format) into PPM
/usr/bin/convert "$1" "$PPM"
if [ $doubledjvu ] then
# A "double DjVu" is an overlay two parts: # the (usual) highpass filtered image # an only by thresholding created bitonal image /usr/bin/mkbitmap $scale -n $PPM -o "$TEMPDIR/a.pbm" /usr/bin/mkbitmap $scale $PPM -o "$TEMPDIR/b.pbm" /usr/bin/pnmarith -multiply "$TEMPDIR/a.pbm" "$TEMPDIR/b.pbm" > $PBM
else
# make bitonal PBM image /usr/bin/mkbitmap $scale $PPM -o $PBM
fi
- encode the PBM image into DjVu
/usr/bin/cjb2 -lossy $PBM "$image.djvu"
- some special treatment in case of a color background
if [ $color ] then
MASK=$TEMPDIR/mask.djvu mv "$image.djvu" $MASK /usr/bin/djvumake "$image.djvu" Sjbz=$MASK PPM="$PPM"
fi
rm -rf "$TEMPDIR" </bash>
Test
Ein Test mit 227 Seiten aus dem Amtsblatt Schleswig 1870. Es handelt sich um farbige Fotografien, die als jpg-Dateien der Größe 1600x1200 Pixel vorliegen.
Art der Datei Gesamtgröße (MB) jpg 111 DjVu sw 15 DjVu Farbe doppelte Auflösung 29 DjVu Farbe 9,8