У меня есть Java-апплет, который генерирует изображение. В конечном счете, я хотел бы вставить данные изображения в базу данных, поэтому я хочу временно сохранить данные изображения в поле формы на странице, содержащей апплет. Я надеюсь сделать это без сохранения файла образа на клиентском компьютере.
Это все из подписи. Вот некоторый код, который должен генерировать битовое изображение из векторных данных, хранящихся в объекте 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, поэтому прошу прощения, если задаю тупой вопрос.
Спасибо.
Edit:
Согласно предложению BalusC, вот код, который я использовал для преобразования изображения в строку Base64 для всех, кому это может быть интересно: (img - это BufferedImage, dataImg - это строка)
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) {}
Для кодирования Base64 используется кодек Apache Commons . Может быть, это тривиально, но для меня это было новым.