Wednesday, August 3, 2011

Split djvu into jpg files

In order to convert a djvu file into a collection of jpg files two tools are needs. One is djvulibre and the other is Imagemagick. Install these first.

One way to convert would be to follow these instructions from http://en.wikisource.org/wiki/Help:DjVu_files

To extract images from a DjVu file, you can use ddjvu

ddjvu -page=8 -format=tiff myfile.djvu myfile.tif 

If you done all the pages (without -page=**) you can split the multi-page tiff into single pages png (or any other format)

convert -limit area 1 myfile.tif myfile.png 

But if the djvu has more than 8 pages then all these pages would be included into the tiff. When Imagemagick tries to convert that tiff and splits it into jpgs then it runs out of cache with the following error.

convert: unable to extend cache file.tif': @ error/cache.c/OpenPixelCache/4175.

It could be remedied but I do not know how. The solution might to limit the memory map http://www.imagemagick.org/script/architecture.php#tera-pixel

But instead a bash script can do the conversion without going into details of the workings of Imagemagick.

But first we need to know the no. of pages in the book. Open it in evince and find it out and replace that no. with the last argument of the "seq" command in the for loop. Like if your djvu file has 300 pages then replace 512 by 300 below, save the file, make it executable with chmod 755 filename and run it with ./filename.

#!/bin/bash
# extract-jpg-from-djvu.sh by Saugata v1.0

for k in `seq 1 512`;
do
echo "extracting page"$k ":" mytif$k.tif "->" sak-$k.jpg
ddjvu -page=$k -format=tiff mybook.djvu mytif$k.tif
convert mytif$k.tif book-$k.jpg
rm mytif$k.tif
done

Tag : Extract jpg images from a djvu file , Split djvu into jpg files

No comments:

OK GOOGLE on Samsung Galaxy S7 doesn’t work

To make Ok Google detection work on Galaxy S7 (Galaxy series phones) we need to perform a couple of steps. 1. As long as Samsung S vo...