2012-12-05 73 views
1

我在JAVA如何从java applet发送图像到JavaScript?

import java.applet.Applet; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.TextArea; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; 

public class JavaScriptToJava extends Applet{ 

    TextArea textBox; 
    Image img; 
    MediaTracker tr; 
    public void init(){ 
     setLayout(new FlowLayout()); 
     textBox = new TextArea(5,40); 
     add(textBox); 
    } 

    public void appendText(String text){ 
     textBox.append(text); 

      Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
       try { 
         //Get data from clipboard and assign it to an image. 
         //clipboard.getData() returns an object, so we need to cast it to a BufferdImage. 
         BufferedImage image = (BufferedImage)clipboard.getData(DataFlavor.imageFlavor); 


       } 
       //getData throws this. 
       catch(UnsupportedFlavorException ufe) { 
         ufe.printStackTrace(); 
       } 

       catch(IOException ioe) { 
         ioe.printStackTrace(); 
       } 
    }  



} 

我需要在JavaScript得到这个图像的代码。这是怎么回事?

我的主要任务是将图像从剪贴板复制并转移到HTML页面调用JS

+0

我不知道很多关于Java小程序,但也许你可以转储它变成一个帆布或成IMG作为dataUrl? – Chad

+0

你可以写一个Methode'公共图像getImage(){return img;}' 这个方法可以在JS中调用 'var img = document.applet.getImage();'但基本上我不知道如果这个工作 – SomeJavaGuy

回答

0

取决于你想用javascript的图像内容。 如果你只是想表明它在屏幕上,你可能想看看 Embedding Base64 Images

否则,如果你要裁剪或使用JavaScript调整其大小,然后将其发送到服务器的事情也会变得更加棘手;)

+0

我不能使用它我需要在所有浏览器上工作 – Mediator

+0

那么,你想要在JS /浏览器中的图片是什么? – ChristianSchaefer

0

创建一个Java方法从您的BufferedImage中得到一个像素:

public int getPixel(int xLoc, int yLoc) { 
    int argb = myImage.getRGB(xLoc, yLoc); 
    int rgba = // ... convert to rgba; 
    return rgba; 
} 

我想这也应该是可能只是一次调用Applet和数组传递到你的JavaScript代码。

在JavaScript中,创建一个Canvas元素,然后调用每个像素的Applet并在Canvas中设置。 (More info about how to call applet from JavaScript.)(Tutorial on HMTL Canvas pixel manipulation.

了一步:

var myCanvas = document.getElementById("myCanvas"); 
var myImg = myCanvas.toDataURL("image/png"); 
document.write('<img src="'+myImg+'"/>');