public ThumbnailDimension determineScaleSize(int maxWidth, int maxHeight, int imageWidth, int imageHeight) { return ThumbnailUtil.determineScaledDimensions(maxWidth, maxHeight, imageWidth, imageHeight); }
@Override public Jsonable get() { List<String> allThumbnailTypes = ThumbnailUtil.getThumbnailMimeTypes(); // Tiff images aren't displayable in most web browsers, so let's remove them from here. List<String> supportedThumbnailTypes = newArrayList(allThumbnailTypes); supportedThumbnailTypes.remove("image/x-tiff"); supportedThumbnailTypes.remove("image/tiff"); return new JsonableString(Joiner.on(",").join(supportedThumbnailTypes)); } }
private BufferedImage scaleImage(int maxWidth, int maxHeight, ImageInputStream imageInputStream) throws IOException { final Optional<ImageReader> imageReader = ThumbnailUtil.getFirstImageReader(imageInputStream); if (!imageReader.isPresent()) { throw new IOException("Cannot read the image"); } final ImageReader reader = imageReader.get(); try { reader.setInput(imageInputStream); final ThumbnailDimension originalImageDimensions = new ThumbnailDimension(reader.getWidth(0), reader.getHeight(0)); final ThumbnailDimension scaledImageDimension = ThumbnailUtil.determineScaledDimensions(maxWidth, maxHeight, originalImageDimensions.getWidth(), originalImageDimensions.getHeight()); final int ratio = ThumbnailUtil.computeSubsamplingRatio(originalImageDimensions, scaledImageDimension, samplingFactor); final ImageReadParam param = reader.getDefaultReadParam(); param.setSourceSubsampling(ratio, ratio, 0, 0); final BufferedImage scaledImage = reader.read(0, param); //Subsampling does not return an exact size of an image - we need to resize it return scaleImage(scaledImage, scaledImageDimension); } finally { reader.dispose(); } }
public static ThumbnailDimension dimensionsForImage(final @Nonnull InputStream inputStream) throws IOException { final BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); try { final ImageInputStream imageInputStream = getImageInputStream(inputStream); try { final Optional<ImageReader> imageReader = getFirstImageReader(imageInputStream); if (!imageReader.isPresent()) { throw new IOException("There is no ImageReader available for the given ImageInputStream"); } // Use the first one available final ImageReader reader = imageReader.get(); try { reader.setInput(imageInputStream); return new ThumbnailDimension(reader.getWidth(0), reader.getHeight(0)); } finally { reader.dispose(); } } finally { imageInputStream.close(); } } finally { IOUtils.closeQuietly(bufferedInputStream); } }
public BufferedImage scaleImage(int maxWidth, int maxHeight, InputStream imageStream) throws IOException { final ImageInputStream imageInputStream = ThumbnailUtil.getImageInputStream(imageStream); try { return scaleImage(maxWidth, maxHeight, imageInputStream); } finally { imageInputStream.close(); } }
private Thumbnail readThumbnail(@Nonnull final Attachment attachment, @Nonnull final File thumbnailFile) { if (thumbnailFile.exists()) { log.debug("Thumbnail file '{}' already exists. Returning existing thumbnail.", thumbnailFile); InputStream inputStream = null; try { inputStream = new FileInputStream(thumbnailFile); final ThumbnailDimension thumbnailDimension = ThumbnailUtil.dimensionsForImage(inputStream); return new Thumbnail(thumbnailDimension.getHeight(), thumbnailDimension.getWidth(), thumbnailFile.getName(), attachment.getId(), MIME_TYPE); } catch (IOException asd) { log.debug("Unable to read image data from existing thumbnail file '{}'. Deleting this thumbnail.", thumbnailFile); deleteQuietly(thumbnailFile); } finally { closeQuietly(inputStream); } } return null; }
public boolean isFileSupportedImage(InputStream inputStream) { ImageInfo imageInfo = new ImageInfo(); try { imageInfo.setInput(inputStream); imageInfo.check(); return ThumbnailUtil.isFormatSupported(imageInfo.getFormatName()); } finally { try { if (inputStream != null) { inputStream.close(); } } catch (Exception e) { log.error("Failed to close InputStream for image", e); } } }
thumbnailable = ThumbnailUtil.isMimeTypeSupported(mimeType);
public static ThumbnailDimension determineScaledDimensions(int maxWidth, int maxHeight, final @Nonnull Image image) { return determineScaledDimensions(maxWidth, maxHeight, image.getWidth(null), image.getHeight(null)); }