package openCV;


import java.awt.Toolkit;

import java.awt.datatransfer.Clipboard;

import java.awt.datatransfer.ClipboardOwner;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.StringSelection;

import java.awt.datatransfer.Transferable;


import com.sun.jna.Native;

import com.sun.jna.platform.win32.User32;

import com.sun.jna.platform.win32.WinDef.HWND;

import com.sun.jna.win32.StdCallLibrary;


public class te implements ClipboardOwner {

    public interface CustomUser32 extends StdCallLibrary {

        CustomUser32 INSTANCE = (CustomUser32) Native.loadLibrary("user32", CustomUser32.class);

        HWND GetForegroundWindow();

        void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

    }


    public void lostOwnership(Clipboard clipboard, Transferable contents) {

        // dummy: needed for `ClipboardOwner`

    }


    void controlC(CustomUser32 customUser32) {

        customUser32.keybd_event((byte) 07/* VK_CONTROL*/, (byte) 0, 0, 0);

        customUser32.keybd_event((byte) 0x43 /* 'C' */, (byte) 0, 0, 0);

        customUser32.keybd_event((byte) 0x43 /* 'C' */, (byte) 0, 2 /* KEYEVENTF_KEYUP */, 0);

        customUser32.keybd_event((byte) 0x11 /* VK_CONTROL*/, (byte) 0, 2 /* KEYEVENTF_KEYUP */, 0);// 'Left Control Up

    }


    String getClipboardText() throws Exception {

        return (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);

    }


    void setClipboardText(String data) throws Exception {

        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(data), this);

    }


    String getSelectedText(User32 user32, CustomUser32 customUser32) throws Exception {

        HWND hwnd = customUser32.GetForegroundWindow();

        char[] windowText = new char[512];

        user32.GetWindowText(hwnd, windowText, 512);

        String windowTitle = Native.toString(windowText);

        System.out.println("Will take selected text from the following window: [" + windowTitle + "]");

        String before = getClipboardText();

        controlC(customUser32); // emulate Ctrl C

        Thread.sleep(100); // give it some time

        String text = getClipboardText();

        System.out.println("Currently in clipboard: " + text);

        // restore what was previously in the clipboard

        setClipboardText(before);

        return text;

    }


    public static void main(String[] args) throws Exception {

        te foo = new te();

        Thread.sleep(2000); // take some time for you to select something anywhere

        System.out.println(foo.getSelectedText(User32.INSTANCE, CustomUser32.INSTANCE));

    }

}

'JAVA > JNA' 카테고리의 다른 글

JNA 로우레벨후킹 예제  (0) 2016.03.17
JNA사용을 위해 다운받아야될것들  (0) 2016.03.14
블로그 이미지

왕왕왕왕

,

package openCV;


import java.util.Arrays;


import org.bytedeco.javacpp.DoublePointer;

import org.bytedeco.javacpp.opencv_core.IplImage;

import org.opencv.core.Core;

import org.opencv.core.Core.MinMaxLocResult;


import com.googlecode.javacv.cpp.opencv_highgui.CvTrackbarCallback;

import com.googlecode.javacv.cpp.opencv_legacy.CvCallback;


//필수 4개 임포트

import static org.bytedeco.javacpp.opencv_imgproc.*;

import static org.bytedeco.javacpp.opencv_highgui.*;

import static org.bytedeco.javacpp.opencv_imgcodecs.*;

import static org.bytedeco.javacpp.opencv_core.*;


public class template {


public double imageAnalysis(String originPath, String tmpPath) {

// TODO Auto-generated method stub


IplImage src = cvLoadImage(originPath);

IplImage tmp = cvLoadImage(tmpPath);

int width = src.width();

int height = src.height();

IplImage result = cvCreateImage(cvSize(src.width() - tmp.width() + 1, src.height() - tmp.height() + 1),

IPL_DEPTH_32F, 1);

cvZero(result);


// Match Template Function from OpenCV

cvMatchTemplate(src, tmp, result, CV_TM_CCOEFF_NORMED);

DoublePointer min_val = new DoublePointer(1);

DoublePointer max_val = new DoublePointer(1);


CvPoint minLoc = new CvPoint();

CvPoint maxLoc = new CvPoint();


// Get the Max or Min Correlation Value

cvMinMaxLoc(result, min_val, max_val, minLoc, maxLoc, null);


CvPoint point = new CvPoint();

point.x(maxLoc.x() + tmp.width());

point.y(maxLoc.y() + tmp.height());


if (max_val.get() < 0.7) {

// System.out.println("정확히 일치하는 이미지가없습니다.");

// hk.keyPresss();0000000000

} else {

cvRectangle(src, maxLoc, point, CvScalar.RED, 4, 8, 0);// Draw


// hk.mouseMove((maxLoc.x() + tmp.width()/2), (maxLoc.y() + tmp.height()/2));

// a

// Rectanglea

// for

// Matched4

// Region4


}


// CvRect rect = new CvRect();

// rect.x(maxLoc.x());

// rect.y(maxLoc.y());

// rect.width(tmp.width());

// rect.height(tmp.height());

// cvSetImageROI(src, rect);

// IplImage imageNew = cvCreateImage(cvGetSize(src),

// src.depth(),

// src.nChannels());

// cvCopy(src, imageNew);

// cvSaveImage("C:\\Users\\kk\\Pictures\\3.png", imageNew);

cvShowImage("Lena Image", src);

cvWaitKey(0);


cvReleaseImage(src);

cvReleaseImage(tmp);

cvReleaseImage(result);

return max_val.get();

}

}



'JAVA > 자바CV' 카테고리의 다른 글

자바CV 다운주소  (0) 2016.03.13
자바CV 필수 임포트  (0) 2016.03.12
블로그 이미지

왕왕왕왕

,
http://opencv.org/

https://code.google.com/archive/p/javacv/

 

 

bytedeco를위한..

http://search.maven.org/#artifactdetails%7Corg.bytedeco%7Cjavacv%7C1.1%7Cjar

 

 

'JAVA > 자바CV' 카테고리의 다른 글

자바CV 원본이미지에서 부분이미지를 찾아내기  (0) 2016.03.13
자바CV 필수 임포트  (0) 2016.03.12
블로그 이미지

왕왕왕왕

,

import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;

 

 

 

 

import static org.bytedeco.javacpp.opencv_calib3d.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;

'JAVA > 자바CV' 카테고리의 다른 글

자바CV 원본이미지에서 부분이미지를 찾아내기  (0) 2016.03.13
자바CV 다운주소  (0) 2016.03.13
블로그 이미지

왕왕왕왕

,

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

request.setCharacterEncoding("EUC-KR");

String value1 = request.getParameter("key1");

String value2 = request.getParameter("key2");

out.println("this is server response");

out.println("key1=" + value1);

out.println("key1=" + value2);

%>

<!-- jsp는 단순히 보내는   -->

</body>

</html>

블로그 이미지

왕왕왕왕

,

자바 -> jsp -> DB 를 연결해서 서버처럼 jsp를 사용하려고함


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;


public class Localhostjava {


public static void main(String[] args) {

// TODO Auto-generated method stub

OutputStreamWriter wr = null;

BufferedReader rd = null;

try {

// Construct data

String data = URLEncoder.encode("key1", "EUC-KR") + "=" + URLEncoder.encode("value1", "EUC-KR");

data += "&" + URLEncoder.encode("key2", "EUC-KR") + "=" + URLEncoder.encode("홍길동", "EUC-KR");

//데이터를 만든다 보내는 데이터는 이렇다 key1=value1&key2=%C8%AB%B1%E6%B5%BF


// Send data

URL url = new URL("http://localhost:8080/sendReciver/was.jsp");

      URLConnection conn = url.openConnection();


//URL 접속을 입출력에 사용할 수 있습니다. URL 접속을 사용해 출력을 실시하는 경우에는 DoOutput 플래그를 true 로 설정합니다. 입력을 실시하는 경우에는 false 로 설정합니다. 기본값는 false 입니다. 

conn.setDoOutput(true);

wr = new OutputStreamWriter(conn.getOutputStream());

wr.write(data);

wr.flush();


// Get the response

rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "EUC-KR"));

String line;

while ((line = rd.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}



'JAVA > 자바' 카테고리의 다른 글

자바 데이터 - 스트링 변환  (0) 2016.04.26
자바 자바 jsp 호출(was) - jsp소스  (0) 2016.02.26
자바 POI라이브러리로 엑셀파일 읽고쓰기  (0) 2016.02.10
자바 JFileChooser  (0) 2016.02.10
자바 오류  (0) 2015.11.21
블로그 이미지

왕왕왕왕

,
첨부 http://neosm.tistory.com/entry/JAVA-POI-%EC%97%91%EC%85%80%ED%8C%8C%EC%9D%BC-%EC%9D%BD%EA%B8%B0-xlsx-%ED%99%95%EC%9E%A5%EC%9E%90


다운경로 http://poi.apache.org/download.html

binary distribution에 .zip 으로된걸 다운


xls는 2007이전버전

POIFSFileSystem fileSystem = new POIFSFileSystem(new FileInputStream(new File(excelFile)));

SSFWorkbook work = new HSSFWorkbook(fileSystem);

xlsx는 2007이후버전

XSSFWorkbook work = new XSSFWorkbook(new FileInputStream(new File(excelFile)));




import java.io.FileInputStream;


import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class XlsxRead {

public static void main(String[] args) {

XSSFRow row;

XSSFCell cell;


try {

FileInputStream inputStream = new FileInputStream("XlsxRead.xlsx");

XSSFWorkbook workbook = new XSSFWorkbook(inputStream);


//sheet수 취득

int sheetCn = workbook.getNumberOfSheets();

System.out.println("sheet수 : " + sheetCn);

for(int cn = 0; cn < sheetCn; cn++){

System.out.println("취득하는 sheet 이름 : " + workbook.getSheetName(cn));

System.out.println(workbook.getSheetName(cn) + " sheet 데이터 취득 시작");

//0번째 sheet 정보 취득

XSSFSheet sheet = workbook.getSheetAt(cn);

//취득된 sheet에서 rows수 취득

int rows = sheet.getPhysicalNumberOfRows();

System.out.println(workbook.getSheetName(cn) + " sheet의 row수 : " + rows);

//취득된 row에서 취득대상 cell수 취득

int cells = sheet.getRow(cn).getPhysicalNumberOfCells(); //

System.out.println(workbook.getSheetName(cn) + " sheet의 row에 취득대상 cell수 : " + cells);

for (int r = 0; r < rows; r++) {

row = sheet.getRow(r); // row 가져오기

if (row != null) {

for (int c = 0; c < cells; c++) {

cell = row.getCell(c);

if (cell != null) {

String value = null;

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_FORMULA:

value = cell.getCellFormula();

break;

case XSSFCell.CELL_TYPE_NUMERIC:

value = "" + cell.getNumericCellValue();

break;

case XSSFCell.CELL_TYPE_STRING:

value = "" + cell.getStringCellValue();

break;

case XSSFCell.CELL_TYPE_BLANK:

value = "[null 아닌 공백]";

break;

case XSSFCell.CELL_TYPE_ERROR:

value = "" + cell.getErrorCellValue();

break;

default:

}

System.out.print(value + "\t");

} else {

System.out.print("[null]\t");

}

} // for(c) 문

System.out.print("\n");

}

} // for(r) 문

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

'JAVA > 자바' 카테고리의 다른 글

자바 자바 jsp 호출(was) - jsp소스  (0) 2016.02.26
자바 자바 JSP 호출 하기 (was) - 자바 소스  (0) 2016.02.26
자바 JFileChooser  (0) 2016.02.10
자바 오류  (0) 2015.11.21
자바 ARC4 암호화  (0) 2015.11.21
블로그 이미지

왕왕왕왕

,

자바 JFileChooser

JAVA/자바 2016. 2. 10. 15:29

출처: http://202psj.tistory.com

JFileChooser 생성

JFileChooser fileDlg = new JFileChooser();

    int result  = fileDlg.showOpenDialog(null);
            if(result == JFileChooser.APPROVE_OPTION) //파일을 선택하고 열었을때 이벤트
            {



            }


필터

// 필터설정 png, jpg 다이렉트만 보이고 나머지는 않보이게 한다.

fileDlg.setFileFilter(new javax.swing.filechooser.FileFilter() {
               
                @Override
                public String getDescription() {
                    // TODO Auto-generated method stub
                    return null;
                }
               
                @Override
                public boolean accept(File f) {
                    // TODO Auto-generated method stub
                    String fileName = f.getName();

                    if(fileName.indexOf(".png") != -1)
                    {
                        return true;
                    }
                    else if(fileName.indexOf(".jpg") != -1)
                    {
                        return true;
                    }
                    else if(f.isDirectory())
                    {
                        return true;
                    }
                   
                    return false;
                }
            });


///////////////////////////////////////////////////////////////////////////////


FileChooser는 사용자로 하여금 읽어들일 파일이나 저장할 파일을 선택하도록 도와주는 선택창이다. JFileChooser는 아래의 그림처럼 FileSystemView, FileView, FIleFileter 그리고 Accessory등과 같은 복합적인 구조로 되어 있다.(아래의 그림에서는 Accessory는 보이지 않음)

 

파일을 선택하기 위해서 사용되는 대표적인 메소드는 showOpenDialog(), 와 showSaveDialog()를 사용한다.

창이 열리고 "열기"버튼이나 "저장"버튼을 클릭하게되면 APPROVE_OPTION이 반환되고, 취소 버튼을 클릭하게 되면 CANCEL_OPTION 이 반환된다.

 

선택한 파일에 대한 정보는 getSelectedFile()메소드를 사용하므로 알 수 있다.



 

 

[주요생성자]

JFileChooser() 사용자의 홈 디렉토리를 가리키는 창을 만든다.
JFileChooser(File dir)
JFileChooser(String dir)
주어진 dir을 가리키는 창을 만든다.

 

 

[ 기본 설정 관련 주요메소드]

void setCurrentDirectory(File dir) 현재 사용 디렉토리를 지정한다.
void setDialogTitle(String title) 창의 제목을 정한다.
void setApproveButtonText(String txt) 열기 또는 저장 버튼의 텍스를 지정한다.

 

 

[대화창 관련 주요 메소드]

int showOpenDialog(Component parent) 열기용 창을 만든다.
int showSaveDialog(Component parent) 저장용 창을 만든다.

이때 반환값 int는 JFileChooser.APPROVE_OPTION 또는 JFileChooser.CANCEL_OPTION 값을 반환한다.

 

 

[파일 선택관련 주요 메소드]

void setFIleSelectionMode(int mode)

파일 선택 모드를 정한다.

  • JFileChooser.FILES_ONLY : 파일만 선택 가능
  • JFileChooser.DIRECTORIES_ONLY : 디렉토리만 선택 가능
  • JFileChooser.FILES_AND_DIRECTORIES : 파일과 디렉토리 모두 가능
void setMultiSelectionEnabled(boolean b) 파일을 다중 선택하고자 할 때 사용한다.

void setSelectedFIle(File file)
void setSelectedFIles(File[] file)

주어진 파일을 선택 상태로 창을 생성한다.
File getSelectedFile()
FIle[] getSelectedFiles()
선택된 파일을 가져온다.

 

[컨트롤 관련 주요 메소드]

void addChoosableFileFilter(FileFilter filter) 파일 필터를 추가한다.
void setFileFilter(FileFilter filter) 파일 필터를 지정한다.
void setAccessory(JComponent accessory) 액세서리를 지정한다.
void setFileSystemView(FileSystemView fs) FIleSystemView를 지정한다.
void setFileView(FileView fv) FileView를 지정한다.

 

[사용예]

JDK 6.0
         JFileChooser chooser = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
                "JPG & GIF Images", "jpg", "gif");  //description,......확장자
            chooser.setFileFilter(filter);    //필터 셋팅
            int returnVal = chooser.showOpenDialog(parent);
            if(returnVal == JFileChooser.APPROVE_OPTION) {
               System.out.println("You chose to open this file: " +
                    chooser.getSelectedFile(). getName());
            }

JDK 6.0 이전버전

읽기창 만들기

  1.     public void fileOpen()
  2.     {
  3.         JFileChooser fc;
  4.         File fileName;

  5.         if(fileName !=null)
  6.         {
  7.             String dir = fileName.getAbsolutePath(); //현재 파일이 위치하는 디렉토리를 가져온다.
  8.             fc = new JFileChooser(dir);
  9.         }
  10.         else
  11.         {
  12.             fc = new JFileChooser();
  13.         }
  14.         
  15.         int yn = fc.showOpenDialog(this);
  16.         if(yn != JFileChooser.APPROVE_OPTION) return;
  17.         
  18.         fileName = fc.getSelectedFile();
  19.     }

저장창 만들기

  1.     public boolean fileSave()
  2.     {
  3.         File fileName;
  4.         JFileChooser fc = new JFileChooser();
  5.         int yn = fc.showSaveDialog(this);
  6.         
  7.         if(yn != JFileChooser.APPROVE_OPTION)
  8.         {
  9.              fileName = null;
  10.              return false;
  11.         }
  12.         
  13.         fileName = fc.getSelectedFile();
  14.         
  15.         this.setTitle("MyEditor[" + fileName + "]");
  16.         
  17.         return true;
  18.     
  19.     }

파일 필터 만들기

먼저 아래와 같은 소스를 만들어 컴파일 한다.

  1. package classes;
  2. import java.io.*;

  3. class MyFilter extends javax.swing.filechooser.FileFilter
  4. {
  5.     String type;
  6.     String desc;
  7.     public MyFilter(String type, String desc)
  8.     {
  9.         this.type = type;
  10.         this.desc = desc;
  11.     }
  12.     public boolean accept(File f)
  13.     {
  14.         return f.getName().endsWith(type) || f.isDirectory();
  15.     }
  16.     
  17.     public String getDescription()
  18.     {
  19.         return desc;
  20.     }
  21. }

필터가 필요한 부분에서 아래 소스의 5,6행 처럼 원하는 필터를 지정하여 창을 열면 된다.

  1.         JFileChooser fc;
  2.         fc = new JFileChooser();
  3.         
  4.         // file filtering
  5.         fc.addChoosableFileFilter(new MyFilter(".txt","Text Files"));
  6.         fc.addChoosableFileFilter(new MyFilter(".java","Java Files"));

 



'JAVA > 자바' 카테고리의 다른 글

자바 자바 JSP 호출 하기 (was) - 자바 소스  (0) 2016.02.26
자바 POI라이브러리로 엑셀파일 읽고쓰기  (0) 2016.02.10
자바 오류  (0) 2015.11.21
자바 ARC4 암호화  (0) 2015.11.21
자바 멀티파트  (0) 2015.11.02
블로그 이미지

왕왕왕왕

,