/* Images.java Purpose: Description: History: Tue Jun 24 15:10:53 2008, Created by tomyeh Copyright (C) 2008 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.image; import java.io.IOException; import java.awt.image.RenderedImage; import org.zkoss.image.encoder.ImageEncoders; import org.zkoss.image.encoder.ImageEncoder; /** * Utilities to handle images. * * @author tomyeh * @since 3.0.7 */ public class Images { /** Encodes an AWT image into a ZK image (in PNG, JPEG or other format). * * @param name The name of the image. The extension of the name must * be the format. Supported format: png and jpeg. * For example, foo.png and foo.jpeg. * @param image The AWT image to be encoded. * @param quality The quality to use for the image encoding. * It is a number between 0 and 1. The higher the value, * the better the output quality. * Not applicable to "png". * @param encodeAlpha Whether to encode alpha transparency. * Not applicable to "png". * @exception IllegalArgumentException if name doesn't contain an * extension with supported format. */ public static Image encode(String name, RenderedImage image, float quality, boolean encodeAlpha) throws IOException { ImageEncoder encoder = ImageEncoders.newInstance(getFormat(name)); encoder.setQuality(quality); encoder.setEncodingAlpha(encodeAlpha); return new AImage(name, encoder.encode(image)); } /** Encodes an AWT image into a ZK image. * * @param name The name of the image. The extension of the name must * be the format. For example, foo.png and foo.jpeg. * @param image The AWT image to be encoded. * @exception IllegalArgumentException if name doesn't contain an * extension with supported format. */ public static Image encode(String name, RenderedImage image) throws IOException { ImageEncoder encoder = ImageEncoders.newInstance(getFormat(name)); return new AImage(name, encoder.encode(image)); } private static String getFormat(String name) { final int j = name.lastIndexOf('.'); if (j < 0) throw new IllegalArgumentException("Illegal name: "+name+"\nIt must contain the extension as the format, such as foo.png"); return name.substring(j + 1); } }