I use Sane's command line utility (scanimage
) in order to scan films from the transparency unit of my scanner. Here is the command that I have been using with success:
scanimage --device-name pixma:04A9190D \
--source 'Transparency Unit' \
--resolution "4800" \
--format "tiff" \
--mode "color" \
-l "80.6" -x "56.2" -t "25.8" -y "219.2" \
> scan.tiff
I have decided to move this to Python code, using pyinsane
in order to enable further integration with my image-processing workflow. This should supposedly give the following in Python code:
import pyinsane.abstract as pyinsane
device = pyinsane.get_devices()[0]
device.options['resolution'].value = 4800
device.options['mode'].value = 'Color'
device.options['source'].value = 'Transparency Unit'
# Setting coordinates to non-integers fails
device.options['tl-y'].value = 25.8
device.options['tl-x'].value = 80.6
device.options['br-y'].value = 219.2
device.options['br-x'].value = 56.2
scan_session = device.scan(multiple=False)
try:
while True:
scan_session.scan.read()
except EOFError:
pass
image = scan_session.images[0]
But my first trials have been unsuccessful because I can not figure out how to set the scan coordinates pyinsane
. As you see, I have found the appropriate options, but I don't know what unit they are in. scanimage
takes the coordinates in millimetres by default, but pyinsane
only takes integers. I have tried using pixel coordinates to no avail. I wonder what units the coordinate parameters take, and whether I am using them in the right order.