Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java =================================================================== diff -u -r15365 -r15392 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 15365) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 15392) @@ -20,6 +20,9 @@ import javax.servlet.http.HttpServletResponse; import javax.swing.ImageIcon; +import net.coobird.thumbnailator.Thumbnails; +import net.coobird.thumbnailator.geometry.Positions; + import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; @@ -34,6 +37,7 @@ import com.forgon.tools.util.FileUtils; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; +import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; @@ -299,8 +303,7 @@ //保存原图 fos = new FileOutputStream(imageFile); fos.write(imageData); - //生成缩略图 - createThumbnailImage(imageFile, imageData, new File(file2,UUIDthumbnailImageName)); + // BufferedImage bi = abbreviatedZoom(imageData); // out = new FileOutputStream(new File(file2,UUIDthumbnailImageName)); // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); @@ -312,6 +315,9 @@ } finally { FileUtils.closeFileOutputStream(fos); } + //生成缩略图 + createThumbnailImage(imageFile, imageData, new File(file2,UUIDthumbnailImageName)); + imageFileObj.setImagePath(originalImagePath); imageFileObj.setThumbnailImagePath(thumbnailImagePath); imageFileObj.setUUIDImageName(UUIDImageName); @@ -373,28 +379,52 @@ // 生成缩略图 BufferedImage thumbnailBufferedImage = new BufferedImage( scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB); - Graphics2D g = thumbnailBufferedImage.createGraphics(); - g.setColor(Color.WHITE); - g.fillRect(0, 0, scaledWidth, scaledHeight); - g.drawImage(originalImage, 0, 0, scaledWidth, - scaledHeight, null); - g.dispose(); - +// Graphics2D g = thumbnailBufferedImage.createGraphics(); +// g.setColor(Color.WHITE); +// g.fillRect(0, 0, scaledWidth, scaledHeight); +// g.drawImage(originalImage, 0, 0, scaledWidth, +// scaledHeight, null); +// g.dispose(); + //2 +// Image scaledImage = originalImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH); +// Graphics2D g = thumbnailBufferedImage.createGraphics(); +// g.setColor(Color.WHITE); +// g.fillRect(0, 0, scaledWidth, scaledHeight); +// g.drawImage(scaledImage, 0, 0, scaledWidth, +// scaledHeight, null); +// g.dispose(); + //2 + //3 try { - thumbnailFOS = new FileOutputStream(thumbnailFile); - JPEGImageEncoder encoder = JPEGCodec - .createJPEGEncoder(thumbnailFOS); - encoder.encode(thumbnailBufferedImage); - } catch (FileNotFoundException e) { - e.printStackTrace(); - throw new RuntimeException("创建缩略图失败,文件未找到!"); - } catch (ImageFormatException e) { - e.printStackTrace(); - throw new RuntimeException("创建缩略图失败,图像格式错误!"); - } catch (IOException e) { - e.printStackTrace(); + Thumbnails.of(originalFile) + .sourceRegion(Positions.TOP_LEFT, originalWidth, originalHeight) + .size(scaledWidth, scaledHeight) + .outputQuality(1.0f) + .toFile(thumbnailFile); + } catch (IOException e1) { + e1.printStackTrace(); throw new RuntimeException("创建缩略图失败!"); } + //3 +// try { +// thumbnailFOS = new FileOutputStream(thumbnailFile); +// JPEGImageEncoder encoder = JPEGCodec +// .createJPEGEncoder(thumbnailFOS); +// JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(thumbnailBufferedImage); +//// JPEGEncodeParam jep = encoder.getJPEGEncodeParam(); +// jep.setQuality(1.0f, 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("创建缩略图失败!"); +// } } else { // 不需要缩放,那么缩略图直接复制原图像 try {