首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA打造缩略图

2012-10-06 
JAVA制作缩略图package graphicsTestimport java.awt.Imageimport java.awt.image.BufferedImageimport

JAVA制作缩略图

package graphicsTest;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class GraphicsTest1 {// 图片宽和高的最大尺寸public static final int IMAGEMAXBIG = 2000;// 图片宽和高的最小尺寸public static final int IMAGEMINBIG = 10;// 按原图大小生成新图public static final int CREATENEWIMAGETYPE_0 = 0;// 按指定的大小生成新图public static final int CREATENEWIMAGETYPE_1 = 1;// 按原图宽高比例生成新图-按指定的宽度public static final int CREATENEWIMAGETYPE_2 = 2;// 按原图宽高比例生成新图-按指定的高度public static final int CREATENEWIMAGETYPE_3 = 3;// 按原图宽高比例生成新图-按指定的宽和高中较大的尺寸public static final int CREATENEWIMAGETYPE_4 = 4;// 按原图宽高比例生成新图-按指定的宽和高中较小的尺寸public static final int CREATENEWIMAGETYPE_5 = 5;/** *  * @param _file *            原图片 * @param createType *            处理类型 * @param newW *            新宽度 * @param newH *            新高度 * @return * @throws Exception */public static String createNewImage(File _file, int createType, int newW,int newH) throws Exception {if (_file == null)return null;String fileName = _file.getPath();if (fileName == null || "".equals(fileName)|| fileName.lastIndexOf(".") == -1)return null;String newFileName = "_NEW";/* * else newFileName = "_" + newFileName; */String outFileName = fileName.substring(0, fileName.lastIndexOf("."))+ newFileName+ fileName.substring(fileName.lastIndexOf("."), fileName.length());String fileExtName = fileName.substring((fileName.lastIndexOf(".") + 1), fileName.length());if (newW < IMAGEMINBIG)newW = IMAGEMINBIG;else if (newW > IMAGEMAXBIG)newW = IMAGEMAXBIG;if (newH < IMAGEMINBIG)newH = IMAGEMINBIG;else if (newH > IMAGEMAXBIG)newH = IMAGEMAXBIG;// 得到原图信息if (!_file.exists() || !_file.isAbsolute() || !_file.isFile()|| !checkImageFile(fileExtName))return null;if ((new File(outFileName)).exists()) {System.out.println("file [" + outFileName + "] already exists");throw new Exception();}Image src = ImageIO.read(_file);int w = src.getWidth(null);int h = src.getHeight(null);// 确定目标图片的大小int nw = w;int nh = h;if (createType == CREATENEWIMAGETYPE_0);else if (createType == CREATENEWIMAGETYPE_1) {nw = newW;nh = newH;} else if (createType == CREATENEWIMAGETYPE_2) {nw = newW;nh = (int) ((double) h / (double) w * nw);} else if (createType == CREATENEWIMAGETYPE_3) {nh = newH;nw = (int) ((double) w / (double) h * nh);} else if (createType == CREATENEWIMAGETYPE_4) {if ((double) w / (double) h >= (double) newW / (double) newH) {nh = newH;nw = (int) ((double) w / (double) h * nh);} else {nw = newW;nh = (int) ((double) h / (double) w * nw);}} else if (createType == CREATENEWIMAGETYPE_5) {if ((double) w / (double) h <= (double) newW / (double) newH) {nh = newH;nw = (int) ((double) w / (double) h * nh);} else {nw = newW;nh = (int) ((double) h / (double) w * nw);}}// 构造目标图片BufferedImage tag = new BufferedImage(nw, nh,BufferedImage.TYPE_INT_RGB);// 得到目标图片输出流FileOutputStream out = new FileOutputStream(outFileName);// 根据需求画出目标图片 方式1tag.getGraphics().drawImage(src, 0, 0, nw, nh, null);// 将画好的目标图输出到输出流 方式1JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag);out.close();return outFileName;}public static boolean checkImageFile(String extName) {if ("jpg".equalsIgnoreCase(extName))return true;if ("gif".equalsIgnoreCase(extName))return true;if ("bmp".equalsIgnoreCase(extName))return true;if ("jpeg".equalsIgnoreCase(extName))return true;if ("png".equalsIgnoreCase(extName))return true;return false;}}

?

热点排行