亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在Java中操作掃描儀(使用JNI)

2019-11-18 11:31:39
字體:
來源:轉載
供稿:網友

  這是一個用java來操作掃描儀的小例子:
package edu.ctgu.JTwacker;

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;

import edu.ctgu.twain.JTwain;
/*
這是顯示掃描圖片的frame
*/
public class JTwacker extends JFrame {

class JPEGPanel extends JPanel {

/** Image for the inner class
*/
PRotected BufferedImage mJPEGPanelBufferedImage;

/** Pnale to diaply the image
*/
public JPEGPanel() {
// no op
}

/** Sets the bufferedimage into the class
* @param bi BufferedImage
*/
public void setBufferedImage(BufferedImage bi) {
if (bi == null) {
return;
}
mJPEGPanelBufferedImage = bi;
Dimension d = new Dimension(mJPEGPanelBufferedImage.getWidth(this),
mJPEGPanelBufferedImage.getHeight(this));
setPreferredSize(d);
revalidate();
repaint();
}

/** Paints the component.
* @param g Graphics object used for the painting
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension d = getSize();
g.setColor(getBackground());
g.fillRect(0, 0, d.width, d.height);
if (mJPEGPanelBufferedImage != null) {
g.drawImage(mJPEGPanelBufferedImage, 0, 0, this);
}
}
}


protected JPEGPanel mJpegPanel;


protected BufferedImage mBufferedImage;

protected JComboBox mSourcesCombo;

protected JToolBar mToolBar;

/** ConstrUCtor
*/
public JTwacker() {
super("測試");

mJpegPanel = new JPEGPanel();
JScrollPane ps = new JScrollPane(mJpegPanel,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
getContentPane().add(ps, BorderLayout.CENTER);

WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser);

mToolBar = new JToolBar("Twain");
mToolBar.setFloatable(false);
addButtons();
getContentPane().add(mToolBar, BorderLayout.NORTH);
setSize(800, 600);

/* Center the frame */
Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle frameDim = getBounds();
setLocation(
(screenDim.width - frameDim.width) / 2,
(screenDim.height - frameDim.height) / 2
);
setVisible(true);
}

protected void addButtons(){

JButton _ab = new JButton("掃描");
_ab.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
acquireImage();
}
});
mToolBar.add(_ab);
mToolBar.addSeparator();

if (edu.ctgu.twain.JTwain.getInstance().isTwainAvailble()) {
String[] twainSources = JTwain.getInstance().getAvailableSources();
if (twainSources != null) {
mSourcesCombo = new JComboBox(twainSources);
} else {
mSourcesCombo = new JComboBox();
mSourcesCombo.addItem("<NONE AVAILABLE>");
}
} else {
mSourcesCombo = new JComboBox();
mSourcesCombo.addItem("<NONE AVAILABLE>");
}
mToolBar.add(mSourcesCombo);
}



protected void acquireImage() {
if (JTwain.getInstance().isTwainAvailble()){
if (mSourcesCombo.getItemCount() > 0 ){
String _source = (String)mSourcesCombo.getSelectedItem();
if (_source != null){
String _filename = JTwain.getInstance().acquire(_source);
System.out.println(_filename);

if (_filename != null && _filename.length() > 0) {
File fChoosen = new File(_filename);
// savetofile(fChoosen);
showImage(fChoosen);
} else {
System.out.println("哎呀,怎么出錯了!");
}
} // end if
} // end if
} // end if
}



protected void showImage(final File file) {
if (file == null !file.exists()) {
return;
}
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Thread runner = new Thread() {
public void run() {
try {
FileInputStream in = new FileInputStream(file);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
mBufferedImage = decoder.decodeAsBufferedImage();
in.close();
SwingUtilities.invokeLater( new Runnable() {
public void run() {
reset();
}
});
}
catch (Exception ex) {
ex.printStackTrace();
}
setCursor(Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR));
}
};
runner.start();
}

//把掃描得到的圖片保存為文件,然后上傳到服務器或保存到數據庫
protected void savetofile(final File file) {
try {
File mfile=new File("c://dd.jpg");
if (mfile.exists()) {
mfile.delete();
}else {
file.renameTo(mfile);
}

} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}

protected void reset() {
if (mBufferedImage != null) {
mJpegPanel.setBufferedImage(mBufferedImage);

}
}


public static void main(String argv[]) {
new JTwacker();
}

}

-------------------------


package edu.ctgu.twain;

/*
這是調用動態鏈接庫的類
*/
public class JTwain {


private static final JTwain mInstance = new JTwain();
protected final String DLL_NAME = "jtwain";

private JTwain() {
initLib();
}

public static JTwain getInstance(){
return mInstance;
}

public native boolean isTwainAvailble();

public native String[] getAvailableSources();

public native String acquire();

public native String acquire(String sourceName);

private void initLib(){

try {


System.loadLibrary(DLL_NAME);
}catch(Exception e) {
e.printStackTrace();
}

finally {
// System.out.println("Loading : " + DLL_NAME + ".dll");
}
}
}

實現jtwain.dll的文件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久香蕉国产线看观看网| 国产丝袜一区二区三区免费视频| 欧美精品日韩www.p站| 亚洲人成伊人成综合网久久久| 亚洲视频在线观看| 国产亚洲视频中文字幕视频| 午夜精品久久久久久久99热浪潮| 精品国产31久久久久久| 国产视频精品在线| 国产欧美精品一区二区三区介绍| 亚洲影院色在线观看免费| 精品无人区太爽高潮在线播放| 亚洲91精品在线观看| 精品亚洲一区二区三区在线播放| 永久免费看mv网站入口亚洲| 视频一区视频二区国产精品| 91黑丝在线观看| 亚洲自拍偷拍第一页| 国产丝袜精品第一页| 丝袜美腿亚洲一区二区| 久久久久亚洲精品| 2018国产精品视频| 97久久精品人人澡人人爽缅北| 精品亚洲va在线va天堂资源站| 97视频免费观看| 国产91精品不卡视频| 久久久精品视频在线观看| 欧美精品一本久久男人的天堂| 欧美在线激情网| 日产日韩在线亚洲欧美| 久久福利视频导航| 亚洲国产精品女人久久久| 高潮白浆女日韩av免费看| 国产一区二区动漫| 91亚洲国产成人精品性色| 国产精品久久精品| 九九热在线精品视频| 欧美日韩国产在线看| 亚洲情综合五月天| 国产欧美在线看| 欧美第一淫aaasss性| 欧美性受xxxx白人性爽| 国产欧美日韩专区发布| 三级精品视频久久久久| 久久深夜福利免费观看| 91色视频在线观看| 理论片在线不卡免费观看| 亚洲国产婷婷香蕉久久久久久| 国产精品视频1区| 成人福利免费观看| 91免费精品视频| 久久久久久久国产| 8090成年在线看片午夜| 在线视频国产日韩| 亚洲亚裔videos黑人hd| 久久久www成人免费精品| 自拍偷拍免费精品| 96pao国产成视频永久免费| 国产成人aa精品一区在线播放| 亚洲天堂视频在线观看| 人妖精品videosex性欧美| 精品一区二区三区电影| 精品视频在线导航| 久久亚洲私人国产精品va| 91精品国产免费久久久久久| 亚洲精品一区中文字幕乱码| 欧美电影免费播放| 欧美怡红院视频一区二区三区| 国产中文欧美精品| 欧美精品videofree1080p| 日韩视频免费看| 亚洲女同性videos| 91成人在线播放| 17婷婷久久www| 欧美大人香蕉在线| 国产日韩欧美黄色| 亚洲最大福利网站| 亚洲人成欧美中文字幕| 国产精品自拍小视频| 欧美精品在线第一页| 日韩av中文字幕在线播放| 欧美黑人性视频| 欧美极品欧美精品欧美视频| 亚洲欧美国产精品久久久久久久| 7777精品久久久久久| 国产91精品高潮白浆喷水| 成人免费午夜电影| 欧美一级淫片aaaaaaa视频| 国产精品亚洲一区二区三区| 亚洲热线99精品视频| 欧美在线视频一区二区| 精品亚洲aⅴ在线观看| 欧美在线观看一区二区三区| 亚洲欧洲在线看| 亚洲性线免费观看视频成熟| 九九热精品视频| 亚洲成人a级网| 欧美wwwwww| 亚洲电影免费观看高清| 国产亚洲欧洲黄色| 国产一区二区三区欧美| 国产在线拍偷自揄拍精品| 日本19禁啪啪免费观看www| 亚洲精品久久久久久久久久久| 国产精品爽爽爽爽爽爽在线观看| 一本色道久久综合亚洲精品小说| 成人黄色片网站| 国产亚洲视频在线| 欧美成人四级hd版| 欧美在线激情视频| 亚洲高清免费观看高清完整版| 国产999精品久久久影片官网| 日韩欧美精品网站| 国产69精品久久久久久| 欧美一级电影在线| 一区二区三区视频观看| 在线观看日韩视频| 久久国产精品久久久久久久久久| 日本国产精品视频| 91精品视频在线看| 精品日韩美女的视频高清| 亚洲人成77777在线观看网| 亚洲在线观看视频网站| 欧美专区在线视频| 亚洲网站视频福利| 欧美日韩精品在线视频| 日韩在线欧美在线国产在线| 国内精品一区二区三区四区| 欧美性猛交xxxxx免费看| 日韩欧美在线一区| 狠狠躁夜夜躁人人躁婷婷91| 性欧美办公室18xxxxhd| 久久99热这里只有精品国产| 日韩成人av一区| 亚洲性视频网址| 欧美激情精品久久久久久| 欧美一区二区三区免费观看| 亚洲理论片在线观看| 亚洲电影成人av99爱色| 亚洲国产精品一区二区三区| 一区二区亚洲欧洲国产日韩| 国产精品久久久久aaaa九色| 欧美精品在线免费播放| 国产精品久久久久久久久粉嫩av| 69**夜色精品国产69乱| 亚洲**2019国产| 国内伊人久久久久久网站视频| 91理论片午午论夜理片久久| 国产精品色婷婷视频| 亚洲无限av看| 亚洲精品国产拍免费91在线| 伊人成人开心激情综合网| 中文字幕成人在线| 亚洲字幕一区二区| 亚洲欧美日韩中文在线| 国产成人精品免高潮在线观看| 国产亚洲视频中文字幕视频| 最新中文字幕亚洲| 国产成人精品优优av| 日韩电影免费观看在线观看| 九色成人免费视频| 亚洲另类欧美自拍| 91精品久久久久久久| 日韩免费视频在线观看|