Package org.openmeetings.app.documents

Source Code of org.openmeetings.app.documents.GenerateImage

package org.openmeetings.app.documents;

import java.io.File;
import java.util.HashMap;

import org.openmeetings.app.data.basic.Configurationmanagement;
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
import org.openmeetings.app.persistence.beans.user.Users;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;

public class GenerateImage {

  private static final Logger log = Red5LoggerFactory.getLogger(
      GenerateImage.class, ScopeApplicationAdapter.webAppRootKey);

  private static GenerateImage instance;

  private GenerateImage() {
  }

  public static synchronized GenerateImage getInstance() {
    if (instance == null) {
      instance = new GenerateImage();
    }
    return instance;
  }

  static String getPathToImageMagic() {
    String pathToImageMagic = Configurationmanagement.getInstance()
        .getConfKey(3, "imagemagick_path").getConf_value();
    if (!pathToImageMagic.equals("")
        && !pathToImageMagic.endsWith(File.separator)) {
      pathToImageMagic += File.separator;
    }
    pathToImageMagic += "convert" + GenerateSWF.execExt;
    return pathToImageMagic;
  }
 
  public HashMap<String, HashMap<String, Object>> convertImage(
      String current_dir, String fileName, String fileExt,
      String roomName, String fileNameShort, boolean fullProcessing)
      throws Exception {

    HashMap<String, HashMap<String, Object>> returnMap = new HashMap<String, HashMap<String, Object>>();

    String working_imgdir = current_dir + "upload" + File.separatorChar
        + roomName + File.separatorChar;
    String working_pptdir = current_dir + "uploadtemp" + File.separatorChar
        + roomName + File.separatorChar;

    String fileFullPath = working_pptdir + fileName + fileExt;

    File f = new File(working_imgdir + fileName + fileExt);
    if (f.exists()) {
      int recursiveNumber = 0;
      String tempd = fileName + "_" + recursiveNumber;
      while (f.exists()) {
        recursiveNumber++;
        tempd = fileName + "_" + recursiveNumber;
        f = new File(working_imgdir + tempd + fileExt);
      }
      fileName = tempd;
    }

    String destinationFile = working_imgdir + fileName;

    log.debug("##### convertImage destinationFile: " + destinationFile);

    HashMap<String, Object> processJPG = this.convertSingleJpg(
        fileFullPath, destinationFile);
    HashMap<String, Object> processThumb = GenerateThumbs.getInstance()
        .generateThumb("_thumb_", current_dir, destinationFile, 50);

    returnMap.put("processJPG", processJPG);
    returnMap.put("processThumb", processThumb);

    // Delete old one
    File fToDelete = new File(fileFullPath);
    fToDelete.delete();

    return returnMap;
  }

  public HashMap<String, HashMap<String, Object>> convertImageUserProfile(
      String current_dir, String fileName, String fileExt, Long users_id,
      String fileNameShort, boolean fullProcessing) throws Exception {

    HashMap<String, HashMap<String, Object>> returnMap = new HashMap<String, HashMap<String, Object>>();

    String working_imgdir = current_dir + "upload" + File.separatorChar
        + "profiles" + File.separatorChar + ScopeApplicationAdapter.profilesPrefix + users_id
        + File.separatorChar;
    String working_pptdir = current_dir + "uploadtemp" + File.separatorChar
        + "profiles" + File.separatorChar + ScopeApplicationAdapter.profilesPrefix + users_id
        + File.separatorChar;

    String fileFullPath = working_pptdir + fileName + fileExt;

    File f = new File(working_imgdir + fileName + fileExt);
    if (f.exists()) {
      int recursiveNumber = 0;
      String tempd = fileName + "_" + recursiveNumber;
      while (f.exists()) {
        recursiveNumber++;
        tempd = fileName + "_" + recursiveNumber;
        f = new File(working_imgdir + tempd + fileExt);
      }
      fileName = tempd;
    }

    String destinationFile = working_imgdir + fileName;
    HashMap<String, Object> processJPG = this.convertSingleJpg(
        fileFullPath, destinationFile);

    HashMap<String, Object> processThumb1 = GenerateThumbs.getInstance()
        .generateThumb("_chat_", current_dir, destinationFile, 40);
    HashMap<String, Object> processThumb2 = GenerateThumbs.getInstance()
        .generateThumb("_profile_", current_dir, destinationFile, 126);
    HashMap<String, Object> processThumb3 = GenerateThumbs.getInstance()
        .generateThumb("_big_", current_dir, destinationFile, 240);

    returnMap.put("processJPG", processJPG);
    returnMap.put("processThumb1", processThumb1);
    returnMap.put("processThumb2", processThumb2);
    returnMap.put("processThumb3", processThumb3);

    // Delete old one
    File fToDelete = new File(fileFullPath);
    fToDelete.delete();

    File fileNameToStore = new File(destinationFile + ".jpg");
    String pictureuri = fileNameToStore.getName();
    Users us = UsersDaoImpl.getInstance().getUser(users_id);
    us.setUpdatetime(new java.util.Date());
    us.setPictureuri(pictureuri);
    UsersDaoImpl.getInstance().updateUser(us);

    ScopeApplicationAdapter.getInstance().updateUserSessionObject(users_id,
        pictureuri);

    return returnMap;
  }

  /**
   * -density 150 -resize 800
   *
   */
  private HashMap<String, Object> convertSingleJpg(String inputFile,
      String outputfile) {
    String[] argv = new String[] { getPathToImageMagic(),
        inputFile, outputfile + ".jpg" };
   
    //return GenerateSWF.executeScript("convertSingleJpg", argv);
   
    if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
      return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
    } else {
      return GenerateThumbs.getInstance().processImageWindows(argv);
    }
   
  }

  public HashMap<String, Object> convertImageByTypeAndSize(String inputFile,
      String outputfile, int width, int height) {
    String[] argv = new String[] { getPathToImageMagic(), "-size",
        width + "x" + height, inputFile, outputfile };
    return GenerateSWF.executeScript("convertImageByTypeAndSizeAndDepth",
        argv);
  }

  public HashMap<String, Object> convertImageByTypeAndSizeAndDepth(
      String inputFile, String outputfile, int width, int height,
      int depth) {
    String[] argv = new String[] { getPathToImageMagic(), "-size",
        width + "x" + height, "-depth", Integer.toString(depth),
        inputFile, outputfile };
    return GenerateSWF.executeScript("convertImageByTypeAndSizeAndDepth",
        argv);
  }

}
TOP

Related Classes of org.openmeetings.app.documents.GenerateImage

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.