protected void storeThumbnailImages(FileVersion fileVersion, File file) throws Exception { ImageBag imageBag = ImageToolUtil.read(file); RenderedImage renderedImage = imageBag.getRenderedImage(); storeThumbnailImages(fileVersion, renderedImage); }
protected void serveTempImageFile(MimeResponse mimeResponse, InputStream tempImageStream) throws Exception { ImageBag imageBag = ImageToolUtil.read(tempImageStream); byte[] bytes = ImageToolUtil.getBytes(imageBag.getRenderedImage(), imageBag.getType()); String contentType = MimeTypesUtil.getExtensionContentType(imageBag.getType()); mimeResponse.setContentType(contentType); PortletResponseUtil.write(mimeResponse, bytes); }
protected Image getImage(InputStream is, byte[] bytes) throws PortalException, SystemException { try { if (is != null) { bytes = FileUtil.getBytes(is); } ImageBag imageBag = ImageProcessorUtil.read(bytes); RenderedImage renderedImage = imageBag.getRenderedImage(); String type = imageBag.getType(); if (renderedImage == null) { throw new ImageTypeException(); } int height = renderedImage.getHeight(); int width = renderedImage.getWidth(); int size = bytes.length; Image image = new ImageImpl(); image.setTextObj(bytes); image.setType(type); image.setHeight(height); image.setWidth(width); image.setSize(size); return image; } catch (IOException ioe) { throw new SystemException(ioe); } finally { if (is != null) { try { is.close(); } catch (IOException ioe) { if (_log.isWarnEnabled()) { _log.warn(ioe); } } } } }
protected byte[] getImageBytes(HttpServletRequest request, Image image) { try { if (!PropsValues.IMAGE_AUTO_SCALE) { return image.getTextObj(); } ImageBag imageBag = null; if (image.getImageId() == 0) { imageBag = ImageToolUtil.read(image.getTextObj()); RenderedImage renderedImage = imageBag.getRenderedImage(); image.setHeight(renderedImage.getHeight()); image.setWidth(renderedImage.getWidth()); } int height = ParamUtil.getInteger(request, "height", image.getHeight()); int width = ParamUtil.getInteger(request, "width", image.getWidth()); if ((height >= image.getHeight()) && (width >= image.getWidth())) { return image.getTextObj(); } if (image.getImageId() != 0) { imageBag = ImageToolUtil.read(image.getTextObj()); } RenderedImage renderedImage = ImageToolUtil.scale(imageBag.getRenderedImage(), height, width); return ImageToolUtil.getBytes(renderedImage, imageBag.getType()); } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn("Error scaling image " + image.getImageId(), e); } } return image.getTextObj(); }
@Override protected void storeThumbnailImages(FileVersion fileVersion, File file) throws Exception { if (!hasThumbnail(fileVersion, THUMBNAIL_INDEX_DEFAULT)) { addFileToStore( fileVersion.getCompanyId(), THUMBNAIL_PATH, getThumbnailFilePath(fileVersion, THUMBNAIL_INDEX_DEFAULT), file); } if (isThumbnailEnabled(THUMBNAIL_INDEX_CUSTOM_1) || isThumbnailEnabled(THUMBNAIL_INDEX_CUSTOM_2)) { ImageBag imageBag = ImageToolUtil.read(file); RenderedImage renderedImage = imageBag.getRenderedImage(); storeThumbnailImage(fileVersion, renderedImage, THUMBNAIL_INDEX_CUSTOM_1); storeThumbnailImage(fileVersion, renderedImage, THUMBNAIL_INDEX_CUSTOM_2); } }
protected Image getImage(InputStream is, byte[] bytes, boolean cleanUpStream) throws PortalException, SystemException { try { if (is != null) { bytes = FileUtil.getBytes(is, -1, cleanUpStream); } if (bytes == null) { return null; } ImageBag imageBag = ImageToolUtil.read(bytes); RenderedImage renderedImage = imageBag.getRenderedImage(); String type = imageBag.getType(); if (renderedImage == null) { throw new ImageTypeException(); } int height = renderedImage.getHeight(); int width = renderedImage.getWidth(); int size = bytes.length; Image image = new ImageImpl(); image.setTextObj(bytes); image.setType(type); image.setHeight(height); image.setWidth(width); image.setSize(size); return image; } catch (IOException ioe) { throw new SystemException(ioe); } }
public Properties generate( ServletContext servletContext, List<URL> imageURLs, String spriteRootDirName, String spriteFileName, String spritePropertiesFileName, String rootPath, int maxHeight, int maxWidth, int maxSize) throws IOException { if (imageURLs.size() < 1) { return null; } Collections.sort(imageURLs, new PropertyComparator("path")); File spriteRootDir = null; if (Validator.isNull(spriteRootDirName)) { File tempDir = (File) servletContext.getAttribute(JavaConstants.JAVAX_SERVLET_CONTEXT_TEMPDIR); spriteRootDir = new File(tempDir, SpriteProcessor.PATH); } else { spriteRootDir = new File(spriteRootDirName); } spriteRootDir.mkdirs(); File spritePropertiesFile = new File(spriteRootDir, spritePropertiesFileName); File spritePropertiesParentFile = spritePropertiesFile.getParentFile(); spritePropertiesParentFile.mkdirs(); boolean build = false; long lastModified = 0; if (spritePropertiesFile.exists()) { lastModified = spritePropertiesFile.lastModified(); URLConnection urlConnection = null; for (URL imageURL : imageURLs) { urlConnection = imageURL.openConnection(); if ((urlConnection != null) && (urlConnection.getLastModified() > lastModified)) { build = true; break; } } } else { build = true; } if (!build) { String spritePropertiesString = FileUtil.read(spritePropertiesFile); if (Validator.isNull(spritePropertiesString)) { return null; } else { return PropertiesUtil.load(spritePropertiesString); } } List<RenderedImage> renderedImages = new ArrayList<RenderedImage>(); Properties spriteProperties = new SortedProperties(); float x = 0; float y = 0; URLConnection urlConnection = null; for (URL imageURL : imageURLs) { urlConnection = imageURL.openConnection(); if ((urlConnection != null) && (urlConnection.getContentLength() > maxSize)) { continue; } try { ImageBag imageBag = ImageToolUtil.read(urlConnection.getInputStream()); RenderedImage renderedImage = imageBag.getRenderedImage(); int height = renderedImage.getHeight(); int width = renderedImage.getWidth(); if ((height <= maxHeight) && (width <= maxWidth)) { renderedImage = convert(renderedImage); renderedImage = TranslateDescriptor.create(renderedImage, x, y, null, null); renderedImages.add(renderedImage); String key = imageURL.getPath(); int pos = key.indexOf(rootPath); if (pos == 0) { key = key.substring(rootPath.length()); } String contextPath = ContextPathUtil.getContextPath(servletContext); key = contextPath.concat(key); String value = (int) y + "," + height + "," + width; spriteProperties.setProperty(key, value); y += renderedImage.getHeight(); } } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn("Unable to process " + imageURL); } if (_log.isDebugEnabled()) { _log.debug(e, e); } } } if (renderedImages.size() <= 1) { renderedImages.clear(); spriteProperties.clear(); } else { // PNG RenderedImage renderedImage = MosaicDescriptor.create( renderedImages.toArray(new RenderedImage[renderedImages.size()]), MosaicDescriptor.MOSAIC_TYPE_OVERLAY, null, null, null, null, null); File spriteFile = new File(spriteRootDir, spriteFileName); spriteFile.mkdirs(); ImageIO.write(renderedImage, "png", spriteFile); if (lastModified > 0) { spriteFile.setLastModified(lastModified); } ImageWorker imageWorker = new ImageWorker(renderedImage); imageWorker.forceIndexColorModelForGIF(true); // GIF renderedImage = imageWorker.getPlanarImage(); spriteFile = new File(spriteRootDir, StringUtil.replace(spriteFileName, ".png", ".gif")); FileOutputStream fos = new FileOutputStream(spriteFile); try { ImageToolUtil.encodeGIF(renderedImage, fos); } finally { fos.close(); } if (lastModified > 0) { spriteFile.setLastModified(lastModified); } } FileUtil.write(spritePropertiesFile, PropertiesUtil.toString(spriteProperties)); if (lastModified > 0) { spritePropertiesFile.setLastModified(lastModified); } return spriteProperties; }
protected FileEntry saveTempImageFileEntry(ActionRequest actionRequest) throws Exception { FileEntry tempFileEntry = null; InputStream tempImageStream = null; try { tempFileEntry = getTempImageFileEntry(actionRequest); tempImageStream = tempFileEntry.getContentStream(); ImageBag imageBag = ImageToolUtil.read(tempImageStream); RenderedImage renderedImage = imageBag.getRenderedImage(); String cropRegionJSON = ParamUtil.getString(actionRequest, "cropRegion"); if (Validator.isNotNull(cropRegionJSON)) { JSONObject jsonObject = JSONFactoryUtil.createJSONObject(cropRegionJSON); int height = jsonObject.getInt("height"); int width = jsonObject.getInt("width"); int x = jsonObject.getInt("x"); int y = jsonObject.getInt("y"); if ((x == 0) && (y == 0) && (renderedImage.getHeight() == height) && (renderedImage.getWidth() == width)) { return tempFileEntry; } if ((height + y) > renderedImage.getHeight()) { height = renderedImage.getHeight() - y; } if ((width + x) > renderedImage.getWidth()) { width = renderedImage.getWidth() - x; } renderedImage = ImageToolUtil.crop(renderedImage, height, width, x, y); } byte[] bytes = ImageToolUtil.getBytes(renderedImage, imageBag.getType()); ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); File file = FileUtil.createTempFile(bytes); try { TempFileEntryUtil.deleteTempFileEntry( themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), getTempImageFolderName(), getTempImageFileName(actionRequest)); } catch (Exception e) { } return TempFileEntryUtil.addTempFileEntry( themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), getTempImageFolderName(), getTempImageFileName(actionRequest), file, tempFileEntry.getMimeType()); } catch (NoSuchFileEntryException nsfee) { throw new UploadException(nsfee); } catch (NoSuchRepositoryException nsre) { throw new UploadException(nsre); } finally { StreamUtil.cleanUp(tempImageStream); } }