【问题标题】:How send image from java applet to javascript?如何将图像从 java applet 发送到 javascript?
【发布时间】:2012-12-05 14:44:07
【问题描述】:

我有 JAVA 代码

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 中获取此图像。这是怎么做到的?

我的主要任务是把剪贴板中的图片复制到调用js的html页面中

【问题讨论】:

  • 我对java小程序了解不多,但也许你可以将它作为dataUrl转储到画布或img中?
  • 你可以写一个 Methode public Image getImage() {return img;} 这个方法可以用 var img = document.applet.getImage(); 在 JS 中调用,但基本上我不知道这个是否有效

标签: java javascript clipboard


【解决方案1】:

取决于你想在 javascript 中对图像做什么。 如果您只想在屏幕上显示它,您可能想看看 Embedding Base64 Images

否则,如果您想使用 javascript 裁剪或调整其大小,然后将其发送到服务器,事情将变得更加棘手;)

【讨论】:

  • 那么,你想在 JS/Browser 中使用图片是什么?
【解决方案2】:

创建一个 Java 方法以从 BufferedImage 中获取像素:

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

我认为也应该可以只调用一次小程序并将一个数组传递给您的 JavaScript 代码。

在 JavaScript 中,创建一个 Canvas 元素,然后为每个像素调用小程序并在 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+'"/>');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2021-11-09
    • 2016-02-11
    • 2014-06-29
    相关资源
    最近更新 更多