[sane-devel] Setting Options Via sane_control_option(...)
Leon Hauck
leon at progcpu.net
Wed Jun 24 18:55:57 UTC 2015
I'm writing a custom frontend for a scanning project in C++ and am about
80% complete. I've been able to get this far by reviewing the scanimage
and test code included in the source and whatever examples I found on
the web. Hopefully someone can nudge me in the right direction.
Sane, scanimage, and xsane are configured and running properly on my
test system (using an Epson Perfection 636 and a Canon LIDE220).
In my frontend I've got the device selected and opened and can make
repeated scans, however the images I'm saving (in PNM format) aren't
what I'm expecting. I'm pretty sure it's due to not setting some of the
options properly prior to the scan.
So my question is - what settings to I need to set to prior to doing a
scan to:
- set the mode (color or gray)
- set the bit depth of the scan (to largest supported by scanner)
- set the scan area
(all scans for this application are going to be
for a fixed area)
Are there some straight forward examples on how to set these options?
I've looked through the scanimage.c code and can't track down exactly
where it handles the "--mode Color" command line option.
The code I'm (unsuccessfully) using now to (attempt to) set these during
program startup is below:
// ----------------------------------------------------------
// taken from epson sane driver
#define OPT_RESOLUTION 10
#define OPT_TL_X 25
#define OPT_TL_Y 26
#define OPT_BR_X 27
#define OPT_BR_Y 28
#define OPT_MODE 2
#define OPT_BIT_DEPTH 3
// set photo option
SANE_Int saneIntVal;
saneIntVal = 300;
sane_control_option( sHand , OPT_RESOLUTION ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
saneIntVal = 8;
sane_control_option( sHand , OPT_BIT_DEPTH ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
saneIntVal = 1;
sane_control_option( sHand , OPT_MODE ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
saneIntVal = 0;
sane_control_option( sHand , OPT_TL_X ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
saneIntVal = 0;
sane_control_option( sHand , OPT_TL_Y ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
saneIntVal = 200;
sane_control_option( sHand , OPT_BR_X ,
SANE_ACTION_SET_VALUE , & saneIntVal , &sane_info );
saneIntVal = 200;
sane_control_option( sHand , OPT_BR_Y ,
SANE_ACTION_SET_VALUE , &saneIntVal , &sane_info );
// ----------------------------------------------------------
Thanks in advance - any help would be appreciated.
More information about the sane-devel
mailing list