我正在开发一个构建Web应用程序的项目,用于从用户获取图像并压缩/调整图像大小并将其上传到数据库。我使用多部分表单将图像数据导入服务器并获取它在haspMap中(使用以下代码实现其他业务逻辑):
filePath = item.getName();
int pos = filePath.lastIndexOf("\\");
fileName = filePath.substring(pos + 1).toLowerCase();
pos = fileName.lastIndexOf(".");
fileType = fileName.substring(pos + 1);
contentType = item.getContentType();
fileData = item.getInputStream();
len = item.getSize();
ImageUploadValues.put("filePath",filePath );
ImageUploadValues.put("fileName",fileName );
ImageUploadValues.put("fileType",fileType );
ImageUploadValues.put("fileData",fileData );
ImageUploadValues.put("filelen",len );
任何人都可以告诉我如何在服务器端压缩/调整此图像的大小,并作为BLOB对象在数据库中上传。我只使用JSP / servlets。我们的客户端不允许使用第三方库。
答案 0 :(得分:1)
为了获得更好的效果,请不要忘记在重新缩放时进行插值。
{{1}}
答案 1 :(得分:0)
将图片加载到java.awt.Image
并缩放:
Image image = ImageIO.read(item.getInputStream());
Image scaled = image.getScaledInstance(SCALED_WITDTH, SCALED_HEIGHT,
Image.SCALE_SMOOTH);
要写出图片,您需要将其转换为java.awt.image.BufferedImage
:
BufferedImage output = new BufferedImage(scaled.getWidth(), scaled.getHeight(),
image.getType());
output.createGraphics().drawImage(scaled, 0, 0, null);
ImageIO.write(output, "jpeg", outputStream);