229 lines
7.1 KiB
Plaintext
229 lines
7.1 KiB
Plaintext
---------------
|
|
SFFTOBMP V3.1.5
|
|
---------------
|
|
|
|
Tool to convert "Structured Fax Files" into Windows bitmaps (BMP),
|
|
Portable Bitmaps (PBM), JPEG Pictures (JPG) and single or multi-
|
|
paged TIFF Images.
|
|
|
|
|
|
SFF - Wotsit ?
|
|
--------------
|
|
|
|
SFF means 'Structured Fax File', intended by the CAPI interface to be
|
|
used to save incoming faxes. Within Linux it's e.g. the AVM-B1 card
|
|
which creates such files.
|
|
|
|
See http://www.capi.org for specs of the CAPI interface.
|
|
|
|
This is where sfftobmp comes in.
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
Conversion of SFF files in Modified Huffman (MH) coding to Windows
|
|
BMP (monochrome, uncompressed), PBM (Portable Bitmap with RAWBITS
|
|
P4-Header), JPEG or TIFF files.
|
|
|
|
SFF files containing more than one page will be split into one
|
|
output file per page, except for TIFF output which will be one multi-
|
|
paged file (however, even for TIFF there's an option to create
|
|
singlepaged files).
|
|
|
|
Written in C++
|
|
|
|
|
|
Compilation
|
|
-----------
|
|
|
|
Only tested under Ubuntu Linux ('Gutsy') and Windows2000 SP4.
|
|
|
|
Used compilers:
|
|
|
|
gcc 4.1.3
|
|
Visual Studio Express
|
|
|
|
Under Linux, a simple call to './configure && make' will be sufficient
|
|
most of the time if using GNU make and provided all needed libraries
|
|
are installed (see below).
|
|
|
|
Under Windows, a Visual Studio workspace file is no longer supplied.
|
|
Please see the folder "win32" for a Makefile for Microsoft NMAKE to
|
|
compile sfftobmp on the command line. Use
|
|
|
|
nmake nodebug=1 /f makefile.vc
|
|
|
|
to build (run the VCVARSALL.BAT before to set all environment variables).
|
|
|
|
Alternatively, you can use the free MinGW C++ Compiler.
|
|
A good (and also free) IDE is Dev-C++ from Bloodshed Software - you'll
|
|
find a workspace file for this IDE in the distribution ("sfftobmp.dev").
|
|
See http://www.bloodshed.net/dev/devcpp.html. However, you will have to
|
|
update the paths to external libraries contained in this workspace.
|
|
|
|
To compile sfftobmp you need the following 3rd party libraries:
|
|
|
|
- jpeglib
|
|
- tifflib
|
|
- libboost-filesystem (available since Boost 1.31.0).
|
|
|
|
On a Linux system these libraries can usually be installed via the package
|
|
manager. On a Debian system you need
|
|
|
|
libjpeg62 and libjpeg62-dev
|
|
libtiff4 and libtiff4-dev
|
|
libboost-filesystem-dev
|
|
|
|
That's all.
|
|
|
|
On Windows, the sources are supplied in the "win32" folder, the makefiles
|
|
are already preconfigured for statically linkage with sfftobmp.
|
|
|
|
For Dev-C++ pre-packaged versions of Tfflib and Jpeglib are available.
|
|
See http://www.bloodshed.net/dev/packages/imagelib.html. Boost libraries
|
|
have to be compiled by yourself, tough (they do provide MinGW support).
|
|
|
|
The 3rd party libraries can be downloaded at this locations:
|
|
|
|
Boost libraries: http://www.boost.org/
|
|
Tifflib : http://www.remotesensing.org/libtiff/
|
|
Jpeglib : http://www.ijg.org/
|
|
|
|
|
|
Usage
|
|
-----
|
|
|
|
sfftobmp [options] INFILE1 [INFILE2 ..] [-o OUTSPEC]
|
|
|
|
Options:
|
|
-h or -help Show help message and exit
|
|
-v or -version Show version and exit
|
|
-b or -bmp Output is one monochrome BMP file for each fax page
|
|
-p or -pbm Output is one Portable Bitmap file for each fax page
|
|
-j or -jpg Output is one JPEG file for each fax page
|
|
-jNUM or -jpg=NUM Use jpeg quality of NUM percent (1..99)
|
|
-T or -tifs Output is one single-page TIFF file for each fax page
|
|
-t or -tif Output is one multi-paged TIFF file containing all pages
|
|
-r or -keepres Inhibit line doubling for low-res faxes
|
|
-d or -keepdate Keep date and time of input file for the output file(s)
|
|
-q or -quiet Don't display messages (except errors)
|
|
|
|
OUTSPEC is interpreted as:
|
|
|
|
- a filename if only one input file is given.
|
|
- a directory name if more than one input file is given.
|
|
|
|
If OUTSPEC is omitted, the name of the output files will be
|
|
derived from the input files and created in the same directory.
|
|
|
|
In case of TIFF output, you can specify the compression by using
|
|
additional specifiers:
|
|
|
|
-tr resp. -Tr : CCITT modified Huffman RLE
|
|
-t4 resp. -T4 : CCITT Fax Class 4 compression
|
|
|
|
The default is CCITT Fax Class 3 compression.
|
|
|
|
For JPEG output you can optionally set the JPEG quality used by
|
|
adding a two-digit number between 1 and 99 to the option.
|
|
|
|
I.e.
|
|
|
|
-j35 or
|
|
-jpg=35
|
|
|
|
means JPEG output with 35% quality. If you don't give a quality,
|
|
a default of 40% is used (mostly sufficient for b&w faxes).
|
|
|
|
|
|
OUTPUT ON STDOUT
|
|
----------------
|
|
|
|
Output on stdout is available for multipaged TIFF output
|
|
only (option "-t"). Use "-" as output filename in this
|
|
case:
|
|
|
|
sfftobmp -t infile.sff -o - > out.tif
|
|
|
|
NOTE: Reading from stdin is not supported.
|
|
|
|
|
|
OUTPUT FILENAMES
|
|
----------------
|
|
|
|
The output filenames will be created by replacing the
|
|
extension of the input file (if it exists) by the extension
|
|
of the target format. If the input file contains more than
|
|
one page a three-digit number is added.
|
|
|
|
So, if the input is called "foo.sff" and has 3 pages,
|
|
the output files are named "foo_001.bmp", "foo_002.bmp"
|
|
and "foo_003.bmp" if you don't specify an OUTSPEC.
|
|
|
|
If you specify an OUTSPEC with an extension, say
|
|
"sfftobmp -b foo.sff -o bar.out" the output filenames are
|
|
called "bar_001.out", "bar_002.out" and "bar_003.out" -
|
|
that is the given extension ".out" is preserved in this
|
|
case.
|
|
|
|
If you specify an OUTSPEC with no extension, the output
|
|
files will also carry no extension.
|
|
|
|
|
|
RESOLUTION HANDLING
|
|
-------------------
|
|
|
|
SffToBmp keeps resolution information intact. This means, if
|
|
you convert a fax with 203x98 dpi this resolution information is
|
|
written in the output file if it is supported by the output
|
|
format. This is JPEG, TIFF and BMP.
|
|
|
|
However, as many bitmap viewer applications are not considering
|
|
this information while displaying the bitmap, SffToBmp defaults
|
|
to double scanlines if a low-res fax (i.e. 203x98 dpi) is
|
|
converted.
|
|
|
|
In case your image viewer does actually treat resolution information
|
|
correctly (your image will look stretched vertically in this case),
|
|
you can suppress this scanline-doubling by specifying the "-r" option.
|
|
|
|
|
|
TODO
|
|
----
|
|
|
|
- speed up decoder with better table lookups
|
|
(looking at GHz CPUs nowadays, i doubt that this happens...)
|
|
- support other non-intel architectures (64 Bits, different
|
|
byte order). Sfftobmp will most likely fail on these.
|
|
(well, no one complained till now)
|
|
- BMP format stores the scan lines bottom-up, that means
|
|
the first line in the file is the last on the screen...
|
|
Therefore the BMP target file will be filled from the end to
|
|
the beginning. To do that, a seek beyond the end of file
|
|
is necessary at creation of the file. This may lead to problems
|
|
on some platforms.
|
|
|
|
|
|
Last but not least...
|
|
---------------------
|
|
|
|
Should decoding of a SFF file fail:
|
|
Please send the SFF file uuencoded to me - if it isn't about
|
|
500 MB and/or contains top secret information ;).
|
|
|
|
Suggestions, extensions and patches welcome, flames will go
|
|
to /dev/null.
|
|
|
|
I'm always pleased to hear that somebody is actually using my
|
|
software. If you can manage it, e-mail me a quick notice.
|
|
|
|
Thanks!
|
|
|
|
Contact:
|
|
--------
|
|
peter.schaefer@gmx.net
|
|
http://sfftools.sourceforge.net
|
|
|
|
$Id$
|