有没有办法从键盘获取打印屏幕图像?比方说,我有一个图片托管站点,并且想要一个功能,用户可以在图片中粘贴,并以这种方式托管它。那可能吗?从剪贴板获取打印屏幕图像
对不起,这是一个模糊的问题。
编辑:有可能与某种第三方插件?有没有现有的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