我有一个生成图像的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编码。也许这是微不足道的,但这对我来说是新的。