package uk.co.mmscomputing.device.sane;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import uk.co.mmscomputing.device.scanner.Scanner;
import uk.co.mmscomputing.device.scanner.ScannerDevice;
import uk.co.mmscomputing.device.scanner.ScannerListener;
import uk.co.mmscomputing.device.scanner.ScannerIOMetadata;
import uk.co.mmscomputing.device.scanner.ScannerIOException;
import uk.co.mmscomputing.device.sane.*;
public class SaneExample implements ScannerListener{
static SaneExample app;
Scanner scanner;
int index=0;
public SaneExample(String[] argv){
scanner=Scanner.getDevice();
scanner.addListener(this);
try{
// scanner.select("fujitsu:/dev/sg0");
System.out.println("Device Name: "+scanner.getSelectedDeviceName());
scanner.acquire();
}catch(ScannerIOException se){
se.printStackTrace();
}
}
public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){
if(type.equals(ScannerIOMetadata.ACQUIRED)){
BufferedImage image=metadata.getImage();
System.out.println("Have image "+index+" now! ");
try{
ImageIO.write(image, "jpeg", new File("mmsc_image"+(index++)+".jpeg"));
}catch(Exception e){
e.printStackTrace();
}
}else if(type.equals(ScannerIOMetadata.STATECHANGE)){
System.err.println(metadata.getStateStr());
if(metadata.isFinished()){
// System.exit(0);
}
}else if(type.equals(ScannerIOMetadata.NEGOTIATE)){
SaneDevice device=(SaneDevice)metadata.getDevice();
// device.setADFMode(true);
try{
device.setShowUserInterface(false); // default: true
device.setShowProgressBar(true); // default: true
// device.setResolution(75);
// device.setOption("mode","Color");
// device.setOption("source","Flatbed");
// System.out.println(device.getOption("source"));
// System.out.println(device.getOption("source").getStringValue());
// device.setOption("source","ADF Duplex");
}catch(Exception e){
e.printStackTrace();
}
}else if(type.equals(ScannerIOMetadata.EXCEPTION)){
metadata.getException().printStackTrace();
}
}
public static void main(String[] argv){
try{
app=new SaneExample(argv);
}catch(Exception e){
e.printStackTrace();
}
}
}