Xpoint
   [напомнить пароль]

Сохранение изображения из буфера обмена апплетом

Метки: [без меток]
[арх]
2008-01-30 18:14:56 [обр] Ioann Grozny(0/48)[досье]

Скажу сразу - на яве я не программирую.
Но возникла необходимость в вебинтерфейсе сохранить содержимое буфера обмена клиента в файл.
Стал искать апплеты, сервлеты и т.п. Как оказалось подобной необходимостью многие инетерсуются, но как это сделать мало кто знает.
Нашел код одного умельца, который не работает.
Помогите разобраться или подскажите как решить поставленную задачу?
Код:

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.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;

public class ImageFromClipboard {
   public static void main(String[] args) throws UnsupportedFlavorException,
         IOException {
      Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
      Transferable transferable = clipboard.getContents(null);
 
      if (transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {
         System.out.println("transferable supports image flavor");
      }
 
      Image image = (Image) transferable.getTransferData(DataFlavor.imageFlavor);
 
      BufferedImage bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
      Graphics2D g = bimage.createGraphics();
      g.drawImage(image, 0, 0, null);
      g.dispose();
 
      ImageIO.write(bimage, "jpg", new File("C:/jv0001.jpg"));
   }
}

В HTML'е:

<applet code="ImageFromClipboard.class" codebase = "../../../new_design/test_folder" width="1" height="1" alt="qqq" title="qaz">
    </applet>

Сам автор пишет что через консоль этот код работает, а через веб - нет и спрашивает что не так.
У меня он не работает ни так ни так.

Напоминаю, мысль такая - сохранить изображение из клипборда на локальный диск, а потом аплоадить его на сервер.

Спасибо.

спустя 6 часов [обр] GRAy(14/259)[досье]
Иван[досье] Не мало кто знает ;) а все кто более или менее разбирается, понимают - что сделать этого не получится просто так. То что приведённый кусок кода работает в консоли, и не работает в апплете (не принимая во внимание тот факта, что это даже и не апплет) объясняется просто - неподписанный апплет не может иметь доступа к буферу обмена. Даже подписанному апплету придётся дать его в явном виде на каждом компьютере на котором он будет запускаться. Тут есть хорошее описание того в чём ограничен неподписанный апплет, а тут что надо делать чтобы подписать его и дать необходимые разрешения.
спустя 6 месяцев [обр] VictorS[досье]

GRAy, а у меня подписанный апплет на клиенте просто при первом запуске спрашивает про свою подпись, и после принятия сертификата клиентом, легко обращается к буферу обмена. Т.е. прописывать на клиентах в явном виде ни чего не нужно.

Иван Афанасьев, я года полтора-два назад как раз решал этот же вопрос. В итоге апплет я написал, но сейчас у меня с ним проблема возникла не связанная с буфером обмена, вот я и заглянул сюда.

Powered by POEM™ Engine Copyright © 2002-2005