Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License") + you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.openmeetings.app.documents; import java.io.File; import java.util.HashMap; import org.openmeetings.app.OpenmeetingsVariables; 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.openmeetings.utils.ProcessHelper; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; public class GenerateImage { private static final Logger log = Red5LoggerFactory.getLogger(GenerateImage.class, OpenmeetingsVariables.webAppRootKey); @Autowired private Configurationmanagement cfgManagement; @Autowired private UsersDaoImpl usersDao; @Autowired private GenerateThumbs generateThumbs; String getPathToImageMagic() { String pathToImageMagic = cfgManagement.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, String>> convertImage(String current_dir, String fileName, String fileExt, String roomName, String fileNameShort, boolean fullProcessing) throws Exception { HashMap<String, HashMap<String, String>> returnMap = new HashMap<String, HashMap<String, String>>(); String working_imgdir = current_dir + OpenmeetingsVariables.UPLOAD_DIR + File.separatorChar + roomName + File.separatorChar; String working_pptdir = current_dir + OpenmeetingsVariables.UPLOAD_TEMP_DIR + 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, String> processJPG = this.convertSingleJpg(fileFullPath, destinationFile); HashMap<String, String> processThumb = generateThumbs.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, String>> convertImageUserProfile(String current_dir, String fileName, String fileExt, Long users_id, String fileNameShort, boolean fullProcessing) throws Exception { HashMap<String, HashMap<String, String>> returnMap = new HashMap<String, HashMap<String, String>>(); String working_imgdir = current_dir + OpenmeetingsVariables.UPLOAD_DIR + File.separatorChar + "profiles" + File.separatorChar + ScopeApplicationAdapter.profilesPrefix + users_id + File.separatorChar; String working_pptdir = current_dir + OpenmeetingsVariables.UPLOAD_TEMP_DIR + 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, String> processJPG = this.convertSingleJpg(fileFullPath, destinationFile); HashMap<String, String> processThumb1 = generateThumbs.generateThumb("_chat_", current_dir, destinationFile, 40); HashMap<String, String> processThumb2 = generateThumbs.generateThumb("_profile_", current_dir, destinationFile, 126); HashMap<String, String> processThumb3 = generateThumbs.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 = usersDao.getUser(users_id); us.setUpdatetime(new java.util.Date()); us.setPictureuri(pictureuri); usersDao.updateUser(us); //FIXME: After uploading a new picture all other clients should refresh //scopeApplicationAdapter.updateUserSessionObject(users_id, pictureuri); return returnMap; } /** * -density 150 -resize 800 * */ private HashMap<String, String> 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 ProcessHelper.executeScript("generateBatchThumbByWidth", argv); } else { return generateThumbs.processImageWindows(argv); } } public HashMap<String, String> convertImageByTypeAndSize(String inputFile, String outputfile, int width, int height) { String[] argv = new String[] { getPathToImageMagic(), "-size", width + "x" + height, inputFile, outputfile }; return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv); } public HashMap<String, String> 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 ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv); } }