| 
		
			| 
	
	
		
			未经过测试,请大家将测试结果回复上来;  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("e:/1.jpg", "e:/t/", 200, 150); 
  } 
  }     |  | 
		
			| 
随笔:8
文章:23
评论:45
引用:0 
			
				| 
	|  |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 | 
|---|
 | 26 | 27 | 28 | 29 | 30 | 31 | 1 |  | 2 | 3 | 4 | 5 | 6 | 7 | 8 |  | 9 | 10 | 11 | 12 | 13 | 14 | 15 |  | 16 | 17 | 18 | 19 | 20 | 21 | 22 |  | 23 | 24 | 25 | 26 | 27 | 28 | 29 |  | 30 | 1 | 2 | 3 | 4 | 5 | 6 |  |  留言簿(5)文章分类(25)最新随笔搜索积分与排名最新评论
	
 |  |