DjVu/Weiterführende Informationen

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen

Script zum Konvertieren vom Bildern

<bash>#!/bin/sh

  1. Copyright (C) 2008 Jesper Zedlitz <jesper@zedlitz.de>
  2. This program is free software: you can redistribute it and/or modify
  3. it under the terms of the GNU General Public License as published by
  4. the Free Software Foundation; either version 3 of the License, or
  5. (at your option) any later version.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. GNU General Public License for more details.
  10. See <http://www.gnu.org/licenses/> for a copy of the GNU General
  11. Public License.
  1. This script helps to convert images into DjVu files.
  1. OPTIONS
  2. -s <N> scale factor for mkbitmap (default=2)
  3. -d create a darker results by combining high-pass filtered image
  4. with a simple by thresholding created bi-tonal image
  5. -c try to preserve the color of the background (currently results have low quality)


  1. You need these Debian/Ubuntu packages to use the script:
  2. 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))

  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

  1. 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

  1. encode the PBM image into DjVu

/usr/bin/cjb2 -lossy $PBM "$image.djvu"

  1. 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