package com.ketayao.fensy.webutil; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import javax.imageio.ImageIO; import com.ketayao.fensy.util.ArrayUtils; import com.ketayao.fensy.util.FilenameUtils; import com.ketayao.fensy.util.StringUtils; /** * 多媒体相关信息 * * @author <a href="mailto:ketayao@gmail.com">ketayao</a> * @since 2013年7月26日 下午4:46:37 */ public abstract class Multimedia { public static int[] getImageSize(File img) throws IOException { BufferedImage bi = (BufferedImage) ImageIO.read(img); return new int[] { bi.getWidth(), bi.getHeight() }; } /** * 保存原图 * * @param img * @param dest * @return * @throws IOException */ public static int[] saveImage(File img, String dest) throws IOException { File fileDest = new File(dest); if (!fileDest.getParentFile().exists()) fileDest.getParentFile().mkdirs(); String ext = FilenameUtils.getExtension(dest).toLowerCase(); BufferedImage bi = (BufferedImage) ImageIO.read(img); return ImageIO.write(bi, ext.equals("png") ? "png" : "jpeg", fileDest) ? new int[] { bi.getWidth(), bi.getHeight() } : null; } public static class Size { public Size(int w, int h) { this.width = w; this.height = h; } public int width; public int height; } public static boolean isImageFile(String fn) { String ext = FilenameUtils.getExtension(fn); if (StringUtils.isBlank(ext)) return false; return ArrayUtils.contains(IMG_EXTS, ext.toLowerCase()); } public static boolean isAudioFile(String fn) { String ext = FilenameUtils.getExtension(fn); if (StringUtils.isBlank(ext)) return false; return ArrayUtils.contains(AUDIO_EXTS, ext.toLowerCase()); } public static boolean isVideoFile(String fn) { String ext = FilenameUtils.getExtension(fn); if (StringUtils.isBlank(ext)) return false; return ArrayUtils.contains(VIDEO_EXTS, ext.toLowerCase()); } public static boolean isFlashFile(String fn) { String ext = FilenameUtils.getExtension(fn); if (StringUtils.isBlank(ext)) return false; return ArrayUtils.contains(FLASH_EXTS, ext.toLowerCase()); } public static boolean isDocumentFile(String fn) { String ext = FilenameUtils.getExtension(fn); if (StringUtils.isBlank(ext)) return false; return ArrayUtils.contains(DOCS_EXTS, ext.toLowerCase()); } /** * 所有支持的MIME TYPES,其他格式的图片不做支持 */ public final static String[] IMG_EXTS = new String[] { "gif", "jpg", "jpeg", "png", "bmp" }; /** * 所有支持的视频MIME TYPES */ public final static String[] VIDEO_EXTS = new String[] { "avi", "rm", "3gp", "wmv", "mpg", "asf" }; /** * 所有支持的音频MIME TYPES */ public final static String[] AUDIO_EXTS = new String[] { "wma", "mp3", "arm", "mid", "aac", "imy" }; /** * Flash动画 */ public final static String[] FLASH_EXTS = new String[] { "swf" }; /** * 文档类型 */ public final static String[] DOCS_EXTS = new String[] { "txt", "htm", "html", "pdf", "doc", "rtf", "xls", "ppt" }; public final static HashMap<String, String> MIME_TYPES = new HashMap<String, String>() { /** 描述 */ private static final long serialVersionUID = 7133356034173876016L; { put("jar", "application/java-archive"); put("jad", "text/vnd.sun.j2me.app-descriptor"); put("sis", "application/vnd.symbian.install"); put("sisx", "x-epoc/x-sisx-app"); put("thm", "application/vnd.eri.thm"); put("nth", "application/vnd.nok-s40theme"); put("zip", "application/zip"); put("rar", "application/octet-stream"); put("cab", "application/octet-stream"); put("gif", "image/gif"); put("jpg", "image/jpeg"); put("jpeg", "image/jpeg"); put("png", "image/png"); put("bmp", "image/bmp"); put("avi", "video/x-msvideo"); put("rm", "application/vnd.rn-realmedia"); put("3gp", "video/3gpp"); put("wmv", "video/x-ms-wmv"); put("mpg", "video/mpg"); put("asf", "video/x-ms-asf"); put("flv", "video/x-flv"); put("mp4", "video/mp4"); put("wma", "audio/x-ms-wma"); put("mp3", "audio/mp3"); put("arm", "audio/amr"); put("mid", "audio/x-midi"); put("aac", "audio/aac"); put("imy", "audio/imelody"); put("swf", "application/x-shockwave-flash"); put("txt", "text/plain"); put("htm", "text/html"); put("html", "text/html"); put("pdf", "application/pdf"); put("doc", "application/msword"); put("rtf", "application/msword"); put("docx", "application/msword"); put("xls", "application/vnd.ms-excel"); put("ppt", "application/vnd.ms-powerpoint"); put("xlsx", "application/vnd.ms-excel"); put("pptx", "application/vnd.ms-powerpoint"); put("chm", "application/octet-stream"); } }; }