public static ThumbnailDetail cropThumbnail( ThumbnailDetail thumbnail, int thumbnailWidth, int thumbnailHeight) { try { ThumbnailDetail thumbDetailComplete = getThumbnailService().getCompleteThumbnail(thumbnail); if (thumbDetailComplete.getCropFileName() != null) { // on garde toujours le meme nom de fichier par contre on le supprime // puis le recreer avec les nouvelles coordonnees deleteThumbnailFileOnServer( thumbnail.getInstanceId(), thumbDetailComplete.getCropFileName()); } else { // case creation String extension = FilenameUtils.getExtension(thumbDetailComplete.getOriginalFileName()); String cropFileName = String.valueOf(new Date().getTime()) + '.' + extension; thumbDetailComplete.setCropFileName(cropFileName); } String pathCropdir = getImageDirectory(thumbnail.getInstanceId()); String pathOriginalFile = pathCropdir + thumbDetailComplete.getOriginalFileName(); String pathCropFile = pathCropdir + thumbDetailComplete.getCropFileName(); createCropThumbnailFileOnServer( pathOriginalFile, pathCropdir, pathCropFile, thumbnail, thumbnailWidth, thumbnailHeight); thumbDetailComplete.setXStart(thumbnail.getXStart()); thumbDetailComplete.setXLength(thumbnail.getXLength()); thumbDetailComplete.setYStart(thumbnail.getYStart()); thumbDetailComplete.setYLength(thumbnail.getYLength()); getThumbnailService().updateThumbnail(thumbDetailComplete); return thumbDetailComplete; } catch (Exception e) { throw new ThumbnailRuntimeException( "ThumbnailController.cropThumbnail()", SilverpeasRuntimeException.ERROR, "thumbnail_MSG_GET_IMAGE_KO", e); } }
private static void createCropFile( int thumbnailWidth, int thumbnailHeight, ThumbnailDetail thumbDetailComplete) throws IOException, ThumbnailException { String pathOriginalFile = getImageDirectory(thumbDetailComplete.getInstanceId()) + thumbDetailComplete.getOriginalFileName(); if (thumbnailWidth == -1 && thumbnailHeight != -1) { // crop with fix height String[] result = ImageUtil.getWidthAndHeightByHeight(new File(pathOriginalFile), thumbnailHeight); thumbnailWidth = Integer.valueOf(result[0]); thumbnailHeight = Integer.valueOf(result[1]); } else if (thumbnailHeight == -1 && thumbnailWidth != -1) { // crop with fix width String[] result = ImageUtil.getWidthAndHeightByWidth(new File(pathOriginalFile), thumbnailWidth); thumbnailWidth = Integer.valueOf(result[0]); thumbnailHeight = Integer.valueOf(result[1]); } else if (thumbnailHeight == -1) { // crop full file String[] result = ImageUtil.getWidthAndHeight(new File(pathOriginalFile)); thumbnailWidth = Integer.valueOf(result[0]); thumbnailHeight = Integer.valueOf(result[1]); } String extension = FilenameUtils.getExtension(thumbDetailComplete.getOriginalFileName()); // add 2 to be sure cropfilename is different from original filename String cropFileName = String.valueOf(new Date().getTime() + 2) + '.' + extension; thumbDetailComplete.setCropFileName(cropFileName); // crop sur l image entiere cropFromPath(pathOriginalFile, thumbDetailComplete, thumbnailHeight, thumbnailWidth); }
/** * To update thumbnails files informations. * * @param thumbDetail :ThumbnailDetail. * @author Sebastien ROCHET */ public static void updateThumbnail(ThumbnailDetail thumbDetail) { try { ThumbnailDetail completeThumbnail = getThumbnailService().getCompleteThumbnail(thumbDetail); // first, delete former thumbnail if (completeThumbnail != null) { if (completeThumbnail.getCropFileName() != null) { deleteThumbnailFileOnServer( completeThumbnail.getInstanceId(), completeThumbnail.getCropFileName()); } getThumbnailService().deleteThumbnail(thumbDetail); } thumbDetail.setCropFileName(null); thumbDetail.setXLength(-1); thumbDetail.setXStart(-1); thumbDetail.setYLength(-1); thumbDetail.setYStart(-1); getThumbnailService().createThumbnail(thumbDetail); } catch (Exception e) { throw new ThumbnailRuntimeException( "ThumbnailController.updateThumbnail()", SilverpeasRuntimeException.ERROR, "thumbnail_MSG_UPDATE_THUMBNAIL_KO", e); } }
protected static void cropFromPath( String pathOriginalFile, ThumbnailDetail thumbDetailComplete, int thumbnailHeight, int thumbnailWidth) throws IOException, ThumbnailException { File originalFile = new File(pathOriginalFile); BufferedImage bufferOriginal = ImageIO.read(originalFile); if (bufferOriginal == null) { SilverTrace.error( "thumbnail", "ThumbnailController.cropFromPath(int thumbnailWidth, " + "int thumbnailHeight,ThumbnailDetail thumbDetailComplete)", "thumbnail.EX_MSG_NOT_AN_IMAGE", "pathOriginalFile=" + pathOriginalFile); throw new ThumbnailException( "ThumbnailBmImpl.cropFromPath()", SilverpeasException.ERROR, "thumbnail.EX_MSG_NOT_AN_IMAGE"); } else { thumbDetailComplete.setXStart(0); thumbDetailComplete.setYStart(0); thumbDetailComplete.setXLength(bufferOriginal.getWidth()); thumbDetailComplete.setYLength(bufferOriginal.getHeight()); String pathCropFile = getImageDirectory(thumbDetailComplete.getInstanceId()) + thumbDetailComplete.getCropFileName(); createCropThumbnailFileOnServer( pathOriginalFile, getImageDirectory(thumbDetailComplete.getInstanceId()), pathCropFile, thumbDetailComplete, thumbnailWidth, thumbnailHeight); getThumbnailService().updateThumbnail(thumbDetailComplete); } }
public static void deleteThumbnail(ThumbnailDetail thumbDetail) { try { // delete the file on server ThumbnailDetail completeThumbnail = getThumbnailService().getCompleteThumbnail(thumbDetail); if (completeThumbnail != null) { if (completeThumbnail.getOriginalFileName() != null) { deleteThumbnailFileOnServer( completeThumbnail.getInstanceId(), completeThumbnail.getOriginalFileName()); } if (completeThumbnail.getCropFileName() != null) { deleteThumbnailFileOnServer( completeThumbnail.getInstanceId(), completeThumbnail.getCropFileName()); } getThumbnailService().deleteThumbnail(thumbDetail); } } catch (Exception fe) { throw new ThumbnailRuntimeException( "ThumbnailController.deleteThumbnail(ThumbnailDetail thumbDetail)", SilverpeasRuntimeException.ERROR, "thumbnail_MSG_DELETE_THUMBNAIL_KO", fe); } }