当前位置: 首页 > 面试题库 >

如何将图像从Java Applet发送到JavaScript?

梁丘招
2023-03-14
问题内容

我有一个生成图像的Java
Applet。最终,我想将图像数据插入数据库中,因此我想将图像数据临时存储在包含小程序的页面上的表单字段中。我希望在不将图像文件存储在客户端计算机上的情况下执行此操作。

所有这些都来自签名板。这是一些应该从sigObj对象中存储的矢量数据生成位图图像的代码:

sigObj.setImagePenWidth(10);
sigObj.setImageXSize(1000);
sigObj.setImageYSize(350);
image = sigObj.sigImage();

image变量是BufferedImage对象。另外,如果我只是将图像变量发送回我的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是BufferedImage,dataImg是String)

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) {}

这使用Apache Commons
Codec
进行Base64编码。也许这是微不足道的,但这对我来说是新的。


问题答案:

您基本上有2个选择:

  1. 从开始byte[]String使用Base64对其进行编码,以便在将二进制数据作为字符数据传输时,二进制数据不会变形。然后,让JavaScript将其设置为某些POST形式的某些隐藏输入值。在服务器端,您需要对其进行Base64解码,以获取原始字节数组。

  2. 使用Java在Applet内部以编程方式触发HTTP POST请求。Java SE API java.net.URLConnection为此提供了此功能(此处为小教程)。更为方便的API是Httpclient。在服务器端,您只需要将其作为常规POST请求参数进行处理即可。

目前尚不清楚您使用的是哪种服务器端编程语言,因此我无法为该端提供更详细的答案。



 类似资料:
  • 我正在尝试使用JNI将一个图像从C++发送到java。该图像是一个用C++创建的位图,其中我使用将像素转换为一个。当使用C++将图像保存到文件中时,没有任何问题,但是当将像素发送到Java时,图像会变得模糊。JavaDocs说我必须使用来实现BufferedImage,但我觉得压缩中有问题 C++位图 这是图像的结果

  • 你好,我想上传多张图片到firebase。目前我可以上传1张图片。尽管如此,我还是决定将所有内容作为HTML,比如标题、描述和图像,放在一个webview中,并从那里显示出来。目前,这项工作还不错,我在firebase中有一个字符串,包含所有这些内容: 不过,正如您所见,这只是本地存储的工作形式。如何下载这些图像并用正确的firebase图像URL替换图像src。

  • 问题内容: 我的问题是可以使用ajax(jquery)将图像上传到服务器吗 以下是我的ajax脚本,无需重新加载页面即可发送文本 是否可以修改它以发送图像? 问题答案: 这可行。 是您要找的东西吗?

  • 问题内容: 我正在制作一个应用程序,用于将图像从Android设备发送到在PC上运行的Java应用程序。客户端(android)上的图片是,我将其转换为,以便通过蓝牙发送到服务器。 请注意,位图来自已压缩的文件,因此我不需要再次对其进行压缩。 我在服务器(Java)上使用以下代码: 客户端没有错误。但是我在服务器端(Java应用程序)遇到此异常: java.lang.IllegalArgument

  • 我在一个类中有一个imageView,在单击imageView时,会出现一个对话框,它有两个选项,可以从相机中获取图像,也可以打开设备的图像库。我想将图像从一个类发送到另一个类,这样它就可以出现在ImageView中。我搜索了很多小时,但我只得到关于从一个类到另一个类的文本数据发送。谁能告诉我从一个类到另一个类的图像发送? 这是来自sender类的代码,它将获取图像。 谢谢你的帮助

  • 问题内容: 我正在为我的应用程序使用烧瓶。我想将图像(由PIL动态生成)发送给客户端,而不保存在磁盘上。 任何想法如何做到这一点? 问题答案: 首先,你可以将映像保存到临时文件并删除本地文件(如果有): 其次,将临时文件设置为响应(根据此stackoverflow问题):