Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将图像从Java小程序发送到JavaScript?_Java_Javascript_Image_Applet - Fatal编程技术网

如何将图像从Java小程序发送到JavaScript?

如何将图像从Java小程序发送到JavaScript?,java,javascript,image,applet,Java,Javascript,Image,Applet,我有一个生成图像的Java小程序。最后,我希望将图像数据插入数据库,因此我希望将图像数据临时存储在包含小程序的页面上的表单字段中。我希望这样做,而无需在客户端计算机上存储图像文件 这一切都来自一个签名本。下面是一些代码,用于根据存储在sigObj对象中的矢量数据生成位图图像: sigObj.setImagePenWidth(10); sigObj.setImageXSize(1000); sigObj.setImageYSize(350); image = sigObj.sigImage();

我有一个生成图像的Java小程序。最后,我希望将图像数据插入数据库,因此我希望将图像数据临时存储在包含小程序的页面上的表单字段中。我希望这样做,而无需在客户端计算机上存储图像文件

这一切都来自一个签名本。下面是一些代码,用于根据存储在sigObj对象中的矢量数据生成位图图像:

sigObj.setImagePenWidth(10);
sigObj.setImageXSize(1000);
sigObj.setImageYSize(350);
image = sigObj.sigImage();
image变量是一个buffereImage对象。另外,如果我只是将image变量发送回JavaScript,那么下面是警报输出:

BufferedImage@fe748f: type = 5 
ColorModel: #
pixelBits = 24 
numComponents = 3 
color space = java.awt.color.ICC_ColorSpace@641e9a 
transparency = 1 
has alpha = false 
isAlphaPre = false 
ByteInterleavedRaster: width = 1000 height = 350 #
numDataElements 3 
dataOff[0] = 2
(为了可读性增加了换行符)

是否可以将图像本身发送回?有什么建议吗

我不太懂Java,所以如果我问了一个愚蠢的问题,我很抱歉

多谢各位

编辑:

根据BalusC的建议,以下是我用来将图像转换为Base64字符串的代码,供任何好奇的人使用:(img是BuffereImage,dataImg是字符串)


这将使用来执行Base64编码。也许这很琐碎,但对我来说是新的。

您基本上有两种选择:

  • 使用将其从
    字节[]
    编码为
    字符串
    ,以便二进制数据在作为字符数据传输时不会出现格式错误。然后,让JavaScript将其设置为某个POST表单的某个隐藏输入值。在服务器端,您需要对其进行Base64解码以恢复原始字节数组

  • 使用Java在小程序内以编程方式触发HTTP POST请求。JavaSEAPI为此()提供了。更方便的API是。在服务器端,您只需要将其作为常规POST请求参数进行处理


  • 不清楚您使用的是哪种服务器端编程语言,因此我无法给出更详细的答案。

    谢谢您的建议,编码到Base64字符串解决了我的问题。然后我就可以用PHP用base64_解码来解码我的图像,我也遇到了同样的问题。第二个选项是不可能的,因为在我们的系统中,HttpOnly设置为true,这使得小程序无法与服务器通信。@Satish:看起来您不知道HttpOnly的实际含义,而且您实际上从未亲自尝试过,或者在尝试中犯过错误。@BalusC我面临的问题与此问题相同。如果你能为解决方案提出一些建议,那将是很有帮助的。
    import org.apache.commons.codec.binary.Base64;
    
    ...
    
    try{        
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(img, "BMP", baos);
        byte[] bytes = baos.toByteArray();
        dataImg = new Base64().encodeBase64String(bytes);
    } catch(Exception e) {}