在服务器端压缩映像的Java代码

时间:2015-09-15 06:23:08

标签: java image-processing

我正在开发一个构建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。我们的客户端不允许使用第三方库。

2 个答案:

答案 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);