package com.hphoto.server; /* import ij.ImagePlus; import ij.io.FileInfo; import ij.io.GifEncoder; import ij.process.ImageProcessor; import ij.process.MedianCut; */ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.MemoryCacheImageInputStream; import javax.media.jai.JAI; import com.sun.imageio.plugins.bmp.BMPImageReader; import com.sun.imageio.plugins.gif.GIFImageReader; import com.sun.imageio.plugins.jpeg.JPEGImageReader; import com.sun.imageio.plugins.png.PNGImageReader; import com.sun.media.jai.codec.MemoryCacheSeekableStream; public class ImageManipulation { public static final String TYPE_GIF = "gif"; public static final String TYPE_JPEG = "jpeg"; public static final String TYPE_PNG = "png"; public static final String TYPE_BMP = "bmp"; public static final String TYPE_NOT_AVAILABLE = "na"; public ImageManipulation(){ } /* public static BufferedImage getImage(InputStream in) throws Exception{ try { return JAI.create("stream", new MemoryCacheSeekableStream( in )).getAsBufferedImage(); } catch (Exception e) { throw e; } } */ public static BufferedImage getImage(InputStream in) { try { MemoryCacheSeekableStream mc = new MemoryCacheSeekableStream( in ); return JAI.create("stream", mc).getAsBufferedImage(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * Get image type from byte[] * * @param textObj * image byte[] * @return String image type */ public static String getImageType(byte[] textObj) { String type = TYPE_NOT_AVAILABLE; ByteArrayInputStream bais = null; MemoryCacheImageInputStream mcis = null; try { bais = new ByteArrayInputStream(textObj); mcis = new MemoryCacheImageInputStream(bais); Iterator itr = ImageIO.getImageReaders(mcis); while (itr.hasNext()) { ImageReader reader = (ImageReader) itr.next(); if (reader instanceof GIFImageReader) { type = TYPE_GIF; } else if (reader instanceof JPEGImageReader) { type = TYPE_JPEG; } else if (reader instanceof PNGImageReader) { type = TYPE_PNG; } else if (reader instanceof BMPImageReader) { type = TYPE_BMP; } reader.dispose(); } } finally { if (bais != null) { try { bais.close(); } catch (IOException ioe) {} } if (mcis != null) { try { mcis.close(); } catch (IOException ioe) {} } } return type; } }