有没有一种方法可以通过键盘获取屏幕截图?比如说我有一个图片托管网站,想要一个功能,用户可以粘贴一张图片并通过这种方式进行托管。这种可能吗?
很抱歉这个问题描述得很模糊。
编辑:是否有一些第三方插件可以实现这个功能?有没有现有的Firefox插件可以做类似的事情?
有没有一种方法可以通过键盘获取屏幕截图?比如说我有一个图片托管网站,想要一个功能,用户可以粘贴一张图片并通过这种方式进行托管。这种可能吗?
很抱歉这个问题描述得很模糊。
编辑:是否有一些第三方插件可以实现这个功能?有没有现有的Firefox插件可以做类似的事情?
一个已签名的Java小程序可以访问剪贴板。
请查看ClipboardService
接口。
用户第一次加载页面时,将会看到一个消息框,询问是否允许访问剪贴板。
更新:我刚刚发现,为了使用ClipboardService
,小程序并不需要被签名,但是用户仍然会在第一次使用时看到警告提示信息。
我有一个小程序可以完美地解决这个问题。
当用户按下打印屏幕的快捷键时,该小程序将会从剪贴板中复制图像,对其进行格式化,并上传到服务器。
这是从剪贴板中获取图像的类,如果你需要其他格式化和上传到服务器的代码,请告诉我。
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。 在制作您的系统时,可以将这些产品的图形用户界面作为灵感。 我特别喜欢YouTrack的无需预览从剪贴板中获取图像,在其中您不需要直接与小程序进行交互。