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

时间:2010-07-16 10:01:49

标签: java javascript flash clipboard

有没有办法从键盘上获取打印屏幕图像。比方说,我有一个图像托管网站,想要一个功能,用户可以粘贴图像,只需这样托管它。那可能吗?

对不起,这是一个模糊的问题。

编辑:是否可以使用某种第三方插件?是否有任何类似的Firefox插件?

5 个答案:

答案 0 :(得分:2)

使用Canvas元素在HTML 5中看起来可以 。见this question.

在Flash中似乎不可能,但在Adobe Air中。请参阅this question

答案 1 :(得分:2)

签名 Java小程序可以访问剪贴板。

查看ClipboardService界面。

用户第一次加载页面时,会看到一个消息框,要求获得访问剪贴板的权限。

更新我刚刚发现applet not 需要签名才能使用ClipboardService,尽管用户仍会看到警告消息第一次。

答案 2 :(得分:0)

不,据我所知,Javascript和Flash已知多年,可能。 Flash和JavaScript都不会让你深入挖掘系统。 (另外,如果他们可以随意阅读我的剪贴板,我作为用户不会喜欢它!)

答案 3 :(得分:0)

我有一个这样做的小程序。

用户点击打印屏幕,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;
    }
}
}

答案 4 :(得分:0)

执行此操作的两个产品是JiraYoutrack。两者都使用Java Applet。 在制作系统时,您可以使用这些产品GUI作为灵感。 我特别喜欢YouTracks Image from Clipboard Without Preview,你不需要直接与applet交互。