Получить изображение экрана печати из буфера обмена - PullRequest
3 голосов
/ 16 июля 2010

Есть ли способ получить изображение экрана печати с клавиатуры.Например, у меня был сайт для размещения изображений, и мне нужна была функция, позволяющая пользователям вставлять изображения и просто размещать их таким образом.Было бы это возможно?

Извините, это такой расплывчатый вопрос.

РЕДАКТИРОВАТЬ: Возможно ли это с какой-то сторонний плагин?Существуют ли плагины Firefox, которые делают что-то подобное?

Ответы [ 5 ]

2 голосов
/ 16 июля 2010

A подписано Java-апплет может получить доступ к буферу обмена.

Посмотрите на интерфейс <a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jre/api/javaws/jnlp/javax/jnlp/ClipboardService.html" rel="nofollow noreferrer">ClipboardService</a>.

При первой загрузке страницы пользователь увидит окно с сообщением о разрешении доступа к буферу обмена.

Обновление Я только что обнаружил, что апплет не должен быть подписан для использования ClipboardService, хотя пользователь все еще видит предупреждение в первый раз.

2 голосов
/ 16 июля 2010

Похоже, что будет возможно в HTML 5 с использованием элемента Canvas. См. этот вопрос.

Это кажется невозможным во Flash, но в Adobe Air. См этот вопрос .

0 голосов
/ 01 августа 2010

Два продукта, которые делают это: Jira и Youtrack .Оба с помощью Java-апплета.Вы можете использовать эти продукты в качестве вдохновения при создании вашей системы.Мне особенно нравятся YouTracks изображение из буфера обмена без предварительного просмотра , где вам не нужно напрямую взаимодействовать с апплетом.

0 голосов
/ 16 июля 2010

У меня есть апплет, который делает именно это.

Пользователь нажимает на экран печати, апплет копирует изображение из буфера обмена, форматирует его и загружает на сервер.

Вот класс, который извлекает его из 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;
    }
}
}
0 голосов
/ 16 июля 2010

Нет, насколько я знаю из многолетнего опыта Javascript и Flash, это не возможно.И Flash, и JavaScript просто не позволяют вам углубиться в систему.(Также мне как пользователю не понравилось бы, если бы они могли читать мой буфер обмена по желанию!)

...