{"id":205,"date":"2008-10-09T17:51:00","date_gmt":"2008-10-09T17:51:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=205"},"modified":"2008-10-09T17:51:00","modified_gmt":"2008-10-09T17:51:00","slug":"twain-scannen-mit-java","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2008\/10\/twain-scannen-mit-java\/","title":{"rendered":"TWAIN-Scannen mit Java"},"content":{"rendered":"<p><a title=\"http:\/\/www.mms-computing.co.uk\/uk\/co\/mmscomputing\/device\/twain\/\" href=\"http:\/\/www.mms-computing.co.uk\/uk\/co\/mmscomputing\/device\/twain\/\">http:\/\/www.mms-computing.co.uk\/uk\/co\/mmscomputing\/device\/twain\/<\/a> ist eine Java-API f&#252;r die TWAIN-Schnittstelle, um etwa einen Scanner anzusteuern. Ein Beispiel ist schnell aufgebaut:<\/p>\n<p>import java.awt.BorderLayout;    <br \/>import java.awt.event.ActionEvent; <\/p>\n<p>import javax.swing.AbstractAction;    <br \/>import javax.swing.Action;     <br \/>import javax.swing.JButton; <\/p>\n<p>import org.jdesktop.swingx.JXFrame;    <br \/>import org.jdesktop.swingx.JXImagePanel;     <br \/>import org.jdesktop.swingx.JXImagePanel.Style; <\/p>\n<p>import uk.co.mmscomputing.device.scanner.Scanner;    <br \/>import uk.co.mmscomputing.device.scanner.ScannerIOException;     <br \/>import uk.co.mmscomputing.device.scanner.ScannerIOMetadata;     <br \/>import uk.co.mmscomputing.device.scanner.ScannerListener;     <br \/>public class TwainExample     <br \/>{     <br \/>&#160; @SuppressWarnings(&quot;serial&quot;)     <br \/>&#160; public static void main( String[] args )     <br \/>&#160; {     <br \/>&#160;&#160;&#160; final JXImagePanel imagePanel = new JXImagePanel();     <br \/>&#160;&#160;&#160; imagePanel.setStyle( Style.SCALED_KEEP_ASPECT_RATIO );     <br \/>&#160;&#160;&#160; final Scanner scanner = Scanner.getDevice();     <br \/>&#160;&#160;&#160; JXFrame f = new JXFrame( &quot;SSP&quot;, true );     <br \/>&#160;&#160;&#160; Action action = new AbstractAction(&quot;Scan&quot;) {     <br \/>&#160;&#160;&#160;&#160;&#160; @Override public void actionPerformed( ActionEvent e ) {     <br \/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; try { scanner.acquire(); } catch ( ScannerIOException ex ) { }     <br \/>&#160;&#160;&#160;&#160;&#160; }     <br \/>&#160;&#160;&#160; };     <br \/>&#160;&#160;&#160; f.add( new JButton(action), BorderLayout.PAGE_START );     <br \/>&#160;&#160;&#160; f.add( imagePanel );     <br \/>&#160;&#160;&#160; f.setSize( 1000, 700 );     <br \/>&#160;&#160;&#160; f.setVisible( true );     <br \/>&#160;&#160;&#160; scanner.addListener( new ScannerListener()     <br \/>&#160;&#160;&#160; {     <br \/>&#160;&#160;&#160;&#160;&#160; public void update( ScannerIOMetadata.Type type, ScannerIOMetadata metadata )     <br \/>&#160;&#160;&#160;&#160;&#160; {     <br \/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( ScannerIOMetadata.ACQUIRED.equals( type ) )     <br \/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; imagePanel.setImage( metadata.getImage() );     <br \/>&#160;&#160;&#160;&#160;&#160; }     <br \/>&#160;&#160;&#160; } );     <br \/>&#160; }     <br \/>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/www.mms-computing.co.uk\/uk\/co\/mmscomputing\/device\/twain\/ ist eine Java-API f&#252;r die TWAIN-Schnittstelle, um etwa einen Scanner anzusteuern. Ein Beispiel ist schnell aufgebaut: import java.awt.BorderLayout; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import org.jdesktop.swingx.JXFrame; import org.jdesktop.swingx.JXImagePanel; import org.jdesktop.swingx.JXImagePanel.Style; import uk.co.mmscomputing.device.scanner.Scanner; import uk.co.mmscomputing.device.scanner.ScannerIOException; import uk.co.mmscomputing.device.scanner.ScannerIOMetadata; import uk.co.mmscomputing.device.scanner.ScannerListener; public class TwainExample { &#160; @SuppressWarnings(&quot;serial&quot;) &#160; public static void main( String[] args ) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[4],"tags":[],"class_list":["post-205","post","type-post","status-publish","format-standard","hentry","category-open-source"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=205"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/205\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}