有沒有辦法從鍵盤獲取打印屏幕圖像?比方說,我有一個圖片託管站點,並且想要一個功能,用戶可以在圖片中粘貼,並以這種方式託管它。那可能嗎?從剪貼板獲取打印屏幕圖像
對不起,這是一個模糊的問題。
編輯:有可能與某種第三方插件?有沒有現有的Firefox插件可以做類似的事情?
有沒有辦法從鍵盤獲取打印屏幕圖像?比方說,我有一個圖片託管站點,並且想要一個功能,用戶可以在圖片中粘貼,並以這種方式託管它。那可能嗎?從剪貼板獲取打印屏幕圖像
對不起,這是一個模糊的問題。
編輯:有可能與某種第三方插件?有沒有現有的Firefox插件可以做類似的事情?
它看起來好像是要使用Canvas
元素在HTML 5中可以使用。請參見this question.
在Flash中似乎不可能,但在Adobe Air中可能。見this question。
不,據我所知,從Javascript和Flash多年的知名度來看,這可能是而不是。 Flash和JavaScript都不能讓你深入挖掘系統。 (另外,如果用戶可以隨意閱讀我的剪貼板,我將不會喜歡它!)
A signed Java applet可以訪問剪貼板。請參閱ClipboardService
界面。
用戶第一次加載頁面時,他們將看到一個消息框,要求獲得訪問剪貼板的權限。
更新我才發現,原來小程序不不需要以使用ClipboardService
要簽名,不過用戶仍然可以看到警告信息的第一次。
我有一個小程序可以做到這一點。
用戶點擊打印屏幕,小程序從剪貼板複製圖像,格式化並上傳到服務器。
這是從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;
}
}
}
這樣做的兩種產品是Jira和Youtrack。兩者都使用Java Applet。 製作您的系統時,您可以使用這些產品GUI作爲靈感。 我特別喜歡YouTracks Image from Clipboard Without Preview,您不需要直接與小應用程序進行交互。
+1對於允許網站訪問剪貼板的正確偏執。這通過閃迴帶回之前的剪貼板漏洞。 – 2010-07-16 17:25:35