从剪贴板中获取打印屏幕图像

有没有办法从键盘获取打印屏幕图像。比方说,我有一个图像托管网站,想要一个功能,用户可以粘贴图像,只需这样托管它。那有可能吗? 对不起,这是一个模糊的问题。 编辑:是否可以使用某种第三方插件?是否有任何现有的Firefox插件可以做类似的事情?     
已邀请:
看起来在HTML 5中使用
Canvas
元素是可能的。看到这个问题。 它似乎不可能在Flash中,但在Adobe Air中。看到这个问题。     
签名的Java小程序可以访问剪贴板。 看看
ClipboardService
界面。 用户第一次加载页面时,会看到一个消息框,要求获得访问剪贴板的权限。 更新我刚刚发现applet不需要签名才能使用
ClipboardService
,尽管用户仍然第一次看到警告消息。     
不,据我所知,从多年的Javascript和Flash知识来看,这是不可能的。 Flash和JavaScript都不会让你深入挖掘系统。 (另外,我作为用户不喜欢它,如果他们可以随意阅读我的剪贴板!)     
我有一个applet正是这样做的。 用户点击打印屏幕,applet从剪贴板复制图像,格式化并上传到服务器。 以下是从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图像,您无需直接与applet交互。     

要回复问题请先登录注册