您可以将图像存储在数据库中,但这不是可取的,也是不好的做法。
您好程序员,首先您需要考虑一下您将使用的尺寸(宽度和高度)是多少,用于一张小头像?是为了一张大相册照片吗?我可以建议您,如果您想将小图像存储在数据库中,对我来说可以,但大图像必须保存在通过 url 访问的磁盘中。
当我需要这样做时,我使用转换并存储在数据库中的 base64 图像,如 String,vou VarChar,这取决于您的数据库,但使用它您需要在上传时转换为 base64,然后重新- 转换为图像重新显示,这对当前的计算机来说不是问题。
通过这个函数,我们可以将BufferedImage(最有可能通过上传服务获取)转换为String,然后我们可以将其存储在DB中。
public static String encodeToString(BufferedImage image, String type) {
String imageString = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ImageIO.write(image, type, bos);
byte[] imageBytes = bos.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
imageString = encoder.encode(imageBytes);
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
return imageString;
}
通过这种方法,我们可以将 String 转换回 BufferedImage,并在 jps 文件上显示或提供服务。
public static BufferedImage decodeToImage(String imageString) {
BufferedImage image = null;
byte[] imageByte;
try {
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imageString);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
return image;
}
显然,我的回答并没有涉及存储在数据库中的所有方面,或者 jps 如何与 java 一起工作,但这只是我的建议。
感谢阅读。