代码之家  ›  专栏  ›  技术社区  ›  Ben Shelock

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

  •  3
  • Ben Shelock  · 技术社区  · 16 年前

    有没有办法从键盘上获取打印屏幕图像。比如说,我有一个图像托管网站,希望有一个功能,用户可以粘贴在一个图像中,并简单地以这种方式托管它。有可能吗?

    抱歉,这是个模糊的问题。

    5 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    看起来像是 Canvas 元素。看到了吗 this question.

    在Flash中似乎不可能,但在adobeair中可能。看到了吗 this question

        2
  •  2
  •   finnw    13 年前

    A 签署 javaapplet可以访问剪贴板。

    ClipboardService 接口。

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

    需要签名才能使用 ClipboardService ,但用户在第一次看到警告消息时仍然会看到。

        3
  •  0
  •   LukeN    16 年前

    不,据我多年来对Javascript和Flash的了解,这是 可能吧。Flash和JavaScript都不能让您深入了解系统(另外,作为一个用户,我不喜欢他们随意阅读我的剪贴板!)

        4
  •  0
  •   Keibosh    16 年前

    我有一个小程序可以做到这一点。

    下面是从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;
        }
    }
    }
    
        5
  •  0
  •   rlovtang    16 年前

    Jira Youtrack . 两者都是通过使用javaapplet实现的。 在制作系统时,您可以使用这些产品GUI作为灵感。 Image from Clipboard Without Preview 不需要直接与applet交互的地方。