2010-07-16 5 views
3

키보드에서 인쇄 화면 이미지를 가져 오는 방법이 있습니까? 예를 들어 이미지 호스팅 사이트가 있었고 사용자가 이미지에 붙여 넣을 수있는 기능을 원했고 간단하게 그 방식으로 호스팅 할 수있는 기능이 필요했습니다. 그게 가능할까요?클립 보드에서 인쇄 화면 이미지 얻기

죄송합니다. 이것은 매우 모호한 질문입니다.

EDIT : 타사 플러그인으로 가능합니까? 비슷한 기능을하는 기존의 Firefox 플러그인이 있습니까?

답변

2

Canvas 요소를 사용하여 HTML5에서 가능할 것으로 보이는 것은 입니다.입니다. this question.

플래시에서는 가능하지만 Adobe Air에서는 가능하지 않습니다. this question을 참조하십시오.

0

아니요. Javascript 및 Flash의 알려진 지식에서 알 수있는 한, 은 아니지만입니다. Flash와 JavaScript는 모두 시스템을 충분히 파고 들지 않습니다. (사용자가 원하는대로 내 클립 보드를 읽을 수 있다면 사용자가 좋아하지 않을 것입니다.)

+0

+1은 사이트가 클립 보드에 액세스 할 수 있도록 허용하는 것에 대해 편집증 적으로 적합합니다. 이것은 플래시를 통한 이전 클립 보드 익스플로잇의 기억을 되살려줍니다. –

2

Java 애플릿이 클립 보드에 액세스 할 수 있습니다.

ClipboardService 인터페이스를 살펴보십시오.

처음으로 사용자가 페이지를로드하면 클립 보드 액세스 권한을 요청하는 메시지 상자가 표시됩니다.

업데이트 난 그냥 사용자가 여전히 경고 메시지를 처음보고 있지만 애플릿이, 하지ClipboardService를 사용하려면 로그인해야한다는 것을 발견했다.

0

정확하게이 작업을 수행하는 애플릿이 있습니다.

사용자가 인쇄 화면을 누르면 애플릿은 클립 보드에서 이미지를 복사하고 서식을 지정하며 서버에 업로드합니다.

나머지 형식 및 서버에 업로드하려는 경우 여기에 CB에서 가져 오는 클래스가 있습니다.

import java.awt.Image; 
import java.awt.Toolkit; 
import java.awt.datatransfer.Clipboard; 
import java.awt.datatransfer.DataFlavor; 
import java.awt.datatransfer.Transferable; 
import java.awt.datatransfer.UnsupportedFlavorException; 
import java.io.IOException; 
import java.security.AccessController; 
import java.security.PrivilegedAction; 

public class ImagefromCB 
{ 
// If an image is on the system clipboard, this method returns it; 
// otherwise it returns null. 
public Image getImageFromClipboard() 
{ 

    Clipboard systemClipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() { 
     public Object run() 
     { 
      Clipboard tempClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     return tempClipboard; 
     } 
    }); 

    // get the contents on the clipboard in a 
    // Transferable object 
    Transferable clipboardContents = systemClipboard.getContents(null); 

    // check if contents are empty, if so, return null 
    if (clipboardContents == null) 
     return null; 
    else 
     try 
     { 
      // make sure content on clipboard is 
      // falls under a format supported by the 
      // imageFlavor Flavor 
      if (clipboardContents.isDataFlavorSupported(DataFlavor.imageFlavor)) 
      { 
       // convert the Transferable object 
       // to an Image object 
       Image image = (Image) clipboardContents.getTransferData(DataFlavor.imageFlavor); 
       return image; 
      } 
     } catch (UnsupportedFlavorException ufe) 
     { 
      ufe.printStackTrace(); 
     } catch (IOException ioe) 
     { 
      ioe.printStackTrace(); 
     } 
    return null; 
} 

public Image getCBImage() 
{ 
    System.out.println("Copying image from system clipboard."); 
    Image image = getImageFromClipboard(); 
    if (image != null) 
    { 
     return image; 
    } else 
    { 
     System.out.println("No Image found on Clipboard"); 
     return null; 
    } 
} 
} 
+0

애플릿에 서명해야한다고 생각합니까? – finnw

+0

예, 서명 된 애플릿없이 AccessController를 사용하는 방법이 있는지 확실하지 않은 경우, 클라이언트 시스템에서 정책 파일을 편집하지 않는 한 애플릿에 서명하지 않고 샌드 박스 사용 권한에 머물러 있다고 생각합니다. – Keibosh

0

이렇게하는 두 가지 제품은 JiraYoutrack입니다. 둘 다 Java 애플릿을 사용합니다. 시스템을 만들 때 이러한 제품 GUI를 사용할 수 있습니다. 특히 YouTracks가 Image from Clipboard Without Preview인데 애플릿과 직접 상호 작용할 필요가 없습니다.

관련 문제