首页 java

java

举报
开通vip

javaimport java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java.awt.color.ColorSpace; import javax.imageio.ImageIO; public class ImageCut { /**   * 缩放图像   *   * @param srcImageFile   *            源图像文件地址   * @param result   ...

java
import java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java.awt.color.ColorSpace; import javax.imageio.ImageIO; public class ImageCut { /**   * 缩放图像   *   * @param srcImageFile   *            源图像文件地址   * @param result   *            缩放后的图像地址   * @param scale   *            缩放比例   * @param flag   *            缩放选择:true 放大; false 缩小;   */ public static void scale(String srcImageFile, String result, int scale,    boolean flag) {   try {    BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件    int width = src.getWidth(); // 得到源图宽    int height = src.getHeight(); // 得到源图长    if (flag) {     // 放大     width = width * scale;     height = height * scale;    } else {     // 缩小     width = width / scale;     height = height / scale;    }    Image image = src.getScaledInstance(width, height,      Image.SCALE_DEFAULT);    BufferedImage tag = new BufferedImage(width, height,      BufferedImage.TYPE_INT_RGB);    Graphics g = tag.getGraphics();    g.drawImage(image, 0, 0, null); // 绘制缩小后的图    g.dispose();    ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流   } catch (IOException e) {    e.printStackTrace();   } } /**   * 图像切割   *   * @param srcImageFile   *            源图像地址   * @param descDir   *            切片目标文件夹   * @param destWidth   *            目标切片宽度   * @param destHeight   *            目标切片高度   */ public static void cut(String srcImageFile, String descDir, int destWidth,    int destHeight) {   try {    Image img;    ImageFilter cropFilter;    // 读取源图像    BufferedImage bi = ImageIO.read(new File(srcImageFile));    int srcWidth = bi.getHeight(); // 源图宽度    int srcHeight = bi.getWidth(); // 源图高度    if (srcWidth > destWidth && srcHeight > destHeight) {     Image image = bi.getScaledInstance(srcWidth, srcHeight,       Image.SCALE_DEFAULT);     destWidth = 200; // 切片宽度     destHeight = 150; // 切片高度     int cols = 0; // 切片横向数量     int rows = 0; // 切片纵向数量     // 计算切片的横向和纵向数量     if (srcWidth % destWidth == 0) {      cols = srcWidth / destWidth;     } else {      cols = (int) Math.floor(srcWidth / destWidth) + 1;     }     if (srcHeight % destHeight == 0) {      rows = srcHeight / destHeight;     } else {      rows = (int) Math.floor(srcHeight / destHeight) + 1;     }     // 循环建立切片     // 改进的想法:是否可用多线程加快切割速度     for (int i = 0; i < rows; i++) {      for (int j = 0; j < cols; j++) {       // 四个参数分别为图像起点坐标和宽高       // 即: CropImageFilter(int x,int y,int width,int height)       cropFilter = new CropImageFilter(j * 200, i * 150,         destWidth, destHeight);       img = Toolkit.getDefaultToolkit().createImage(         new FilteredImageSource(image.getSource(),           cropFilter));       BufferedImage tag = new BufferedImage(destWidth,         destHeight, BufferedImage.TYPE_INT_RGB);       Graphics g = tag.getGraphics();       g.drawImage(img, 0, 0, null); // 绘制缩小后的图       g.dispose();       // 输出为文件       ImageIO.write(tag, "JPEG", new File(descDir         + "pre_map_" + i + "_" + j + ".jpg"));      }     }    }   } catch (Exception e) {    e.printStackTrace();   } } /**   * 图像类型转换      * GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)      */ public static void convert(String source, String result) {   try {    File f = new File(source);    f.canRead();    f.canWrite();    BufferedImage src = ImageIO.read(f);    ImageIO.write(src, "JPG", new File(result));   } catch (Exception e) {    // TODO Auto-generated catch block    e.printStackTrace();   } } /**   * 彩色转为黑白   *   * @param source   * @param result   */ public static void gray(String source, String result) {   try {    BufferedImage src = ImageIO.read(new File(source));    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);    ColorConvertOp op = new ColorConvertOp(cs, null);    src = op.filter(src, null);    ImageIO.write(src, "JPEG", new File(result));   } catch (IOException e) {    e.printStackTrace();   } } /**   * @param args   */ public static void main(String[] args) {   //cut("C:/1.jpg", "C:/test/", 200, 150); } }
本文档为【java】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_298401
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:4
分类:互联网
上传时间:2011-04-06
浏览量:17