Package railo.runtime.img

Source Code of railo.runtime.img.ImageMetaDrew

package railo.runtime.img;

import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import railo.commons.io.IOUtil;
import railo.commons.io.res.Resource;
import railo.runtime.exp.PageException;
import railo.runtime.type.KeyImpl;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;

import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.imaging.tiff.TiffMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;

public class ImageMetaDrew {

  /**
   * adds information about a image to the given struct
   * @param info
   * @throws PageException
   * @throws IOException
   * @throws MetadataException
   * @throws JpegProcessingException
   */
  public static void addInfo(String format, Resource res, Struct info)  {
    if("jpg".equalsIgnoreCase(format))jpg(res, info);
    else if("tiff".equalsIgnoreCase(format))tiff(res, info);
   
  }

  private static void jpg(Resource res,Struct info) {
    InputStream is=null;
    try {
      is = res.getInputStream();
      fill(info,JpegMetadataReader.readMetadata(is));
    }
    catch(Throwable t) {
      //throw Caster.toPageException(t);
    }
    finally {
      IOUtil.closeEL(is);
    }
  }
 
  private static void tiff(Resource res,Struct info) {
    InputStream is=null;
    try {
      is = res.getInputStream();
      fill(info,TiffMetadataReader.readMetadata(is));
    }
    catch(Throwable t) {
      //throw Caster.toPageException(t);
    }
    finally {
      IOUtil.closeEL(is);
    }
  }

  private static void fill(Struct info,Metadata metadata) throws MetadataException {
    Iterator<Directory> directories = metadata.getDirectoryIterator();
    while (directories.hasNext()) {
        Directory directory = directories.next();
        Struct sct=new StructImpl();
        info.setEL(KeyImpl.init(directory.getName()), sct);
       
        Iterator<Tag> tags = directory.getTagIterator();
        while (tags.hasNext()) {
            Tag tag = tags.next();
            sct.setEL(KeyImpl.init(tag.getTagName()), tag.getDescription());
        }
    }
  }

  public static void test() {
    // to not delete, this methd is called to test if the jar exists
   
  }

 

}
TOP

Related Classes of railo.runtime.img.ImageMetaDrew

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.