extensions/net.sf.basedb.thumbnails/trunk/src/net/sf/basedb/thumbnails/impl/ImageImageLoader.java

Code
Comments
Other
Rev Date Author Line
3417 24 Jun 15 nicklas 1 package net.sf.basedb.thumbnails.impl;
3417 24 Jun 15 nicklas 2
3417 24 Jun 15 nicklas 3 import java.awt.image.BufferedImage;
3417 24 Jun 15 nicklas 4 import java.io.IOException;
3417 24 Jun 15 nicklas 5 import java.io.InputStream;
3417 24 Jun 15 nicklas 6
3417 24 Jun 15 nicklas 7 import javax.imageio.ImageIO;
3417 24 Jun 15 nicklas 8
6043 11 Nov 20 nicklas 9 import org.imgscalr.Scalr;
6043 11 Nov 20 nicklas 10 import org.imgscalr.Scalr.Rotation;
6043 11 Nov 20 nicklas 11
6053 13 Nov 20 nicklas 12 import net.sf.basedb.thumbnails.Crop;
3417 24 Jun 15 nicklas 13 import net.sf.basedb.thumbnails.ImageLoader;
5351 10 Apr 19 nicklas 14 import net.sf.basedb.thumbnails.ThumbnailSize;
5351 10 Apr 19 nicklas 15 import net.sf.basedb.thumbnails.Thumbnails;
3417 24 Jun 15 nicklas 16
3417 24 Jun 15 nicklas 17 /**
3417 24 Jun 15 nicklas 18   Image loader that expect an image file that can be read
3417 24 Jun 15 nicklas 19   by the {@link ImageIO} implementation. Typically used for
5351 10 Apr 19 nicklas 20   PNG and JPG images. Thumbnails are scaled and returned as
5351 10 Apr 19 nicklas 21   JPG images.
3417 24 Jun 15 nicklas 22
3417 24 Jun 15 nicklas 23   @author nicklas
3417 24 Jun 15 nicklas 24   @since 1.0
3417 24 Jun 15 nicklas 25 */
3417 24 Jun 15 nicklas 26 public class ImageImageLoader 
3417 24 Jun 15 nicklas 27   implements ImageLoader
3417 24 Jun 15 nicklas 28 {
5351 10 Apr 19 nicklas 29   private BufferedImage image;
5351 10 Apr 19 nicklas 30   
3417 24 Jun 15 nicklas 31   public ImageImageLoader() 
3417 24 Jun 15 nicklas 32   {}
5351 10 Apr 19 nicklas 33
5351 10 Apr 19 nicklas 34   @Override
5351 10 Apr 19 nicklas 35   public String getThumbMimeType()
5351 10 Apr 19 nicklas 36   {
5351 10 Apr 19 nicklas 37     return "image/jpg";
5351 10 Apr 19 nicklas 38   }
3417 24 Jun 15 nicklas 39   
3417 24 Jun 15 nicklas 40   @Override
5351 10 Apr 19 nicklas 41   public String getThumbExtension()
5351 10 Apr 19 nicklas 42   {
5351 10 Apr 19 nicklas 43     return "jpg";
5351 10 Apr 19 nicklas 44   }
5351 10 Apr 19 nicklas 45   
5351 10 Apr 19 nicklas 46   @Override
6046 11 Nov 20 nicklas 47   public void loadImage(InputStream in, int imageIndex)
3417 24 Jun 15 nicklas 48     throws IOException 
3417 24 Jun 15 nicklas 49   {
5351 10 Apr 19 nicklas 50     image = ImageIO.read(in);
3417 24 Jun 15 nicklas 51   }
3417 24 Jun 15 nicklas 52
5351 10 Apr 19 nicklas 53   @Override
6053 13 Nov 20 nicklas 54   public byte[] getThumbImage(ThumbnailSize size, Rotation rotation, Crop crop) 
5351 10 Apr 19 nicklas 55     throws IOException
5351 10 Apr 19 nicklas 56   {
6053 13 Nov 20 nicklas 57     BufferedImage tmp = crop == null ? image : crop.crop(image); 
6053 13 Nov 20 nicklas 58     BufferedImage thumb = Thumbnails.scaleImage(tmp, size);
6043 11 Nov 20 nicklas 59     if (rotation != null) thumb = Scalr.rotate(thumb, rotation);
5351 10 Apr 19 nicklas 60     byte[] jpg = Thumbnails.toJpg(thumb, size.MEMORY);
5351 10 Apr 19 nicklas 61     return jpg;
5351 10 Apr 19 nicklas 62   }
5351 10 Apr 19 nicklas 63
3417 24 Jun 15 nicklas 64 }