有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何将图像从java小程序发送到javascript?

我有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页面


共 (2) 个答案

  1. # 1 楼答案

    取决于您希望在javascript中对图像执行什么操作。 若你们只是想在屏幕上显示它,你们可能想看一看 Embedding Base64 Images

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

  2. # 2 楼答案

    创建Java方法以从BuffereImage中获取像素:

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

    我认为还可以只调用一次小程序,并将数组传递给JavaScript代码

    在JavaScript中,创建一个画布元素,然后为每个像素调用applet并在画布中设置。(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+'"/>');