Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java =================================================================== diff -u -r15392 -r15399 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 15392) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 15399) @@ -441,7 +441,47 @@ } } } + // 不改变图片的分辨率,只是压缩,减少图片体积 + private void createThumbnailImage2(File originalFile, + byte[] originalImageData, File thumbnailFile) { + ImageIcon originalImageIcon = new ImageIcon(originalImageData); + Image originalImage = originalImageIcon.getImage(); + int originalWidth = originalImageIcon.getIconWidth(); + int originalHeight = originalImageIcon.getIconHeight(); + + FileOutputStream thumbnailFOS = null; + + // 生成缩略图 + BufferedImage thumbnailBufferedImage = new BufferedImage( + originalWidth, originalHeight, BufferedImage.TYPE_INT_RGB); + Graphics2D g = thumbnailBufferedImage.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0, 0, originalWidth, originalHeight); + g.drawImage(originalImage, 0, 0, originalWidth, originalHeight, null); + g.dispose(); + //2 + try { + thumbnailFOS = new FileOutputStream(thumbnailFile); + JPEGImageEncoder encoder = JPEGCodec + .createJPEGEncoder(thumbnailFOS); + JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(thumbnailBufferedImage); +// JPEGEncodeParam jep = encoder.getJPEGEncodeParam(); + jep.setQuality(0.75f, true); + encoder.setJPEGEncodeParam(jep); + encoder.encode(thumbnailBufferedImage); + } catch (FileNotFoundException e) { + e.printStackTrace(); + throw new RuntimeException("创建缩略图失败,文件未找到!"); + } catch (ImageFormatException e) { + e.printStackTrace(); + throw new RuntimeException("创建缩略图失败,图像格式错误!"); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException("创建缩略图失败!"); + } + } + // 根据总的像素数判断是否需要缩放 private boolean whetherNeedToZoomByTotalPixles(int originalWidth,int originalHeight,int totalPixles){ if(originalWidth*originalHeight <= totalPixles){