CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

请问怎么将一幅图片分成9个同样大小的部分??并显示出来

楼主ideal2004(小青莲居士)2005-06-04 20:12:48 在 Java / J2SE / 基础类 提问

请问怎么将一幅图片分成9个同样大小的部分??并显示出来 问题点数:20、回复次数:2Top

1 楼abcdhy(程旭)回复于 2005-06-04 21:43:32 得分 20

使用   BufferedImage.getSubImage()   函数就可以了.  
  给你一个例子:  
   
  import   java.awt.*;  
  import   java.awt.image.*;  
  import   java.io.*;  
  import   javax.swing.*;  
   
  class   SplitImage   {  
   
  private   SplitImage()   {}  
   
  static   public   Image[]   split_size(String   imageFile   ,   int   w   ,   int   h)   {  
  Image[]   images   =   new   Image[0];  
  Image   image   =   getImageFromFile(imageFile);  
  if(   image   ==   null   )   return   images;  
  BufferedImage   bufImage   =   new   BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_4BYTE_ABGR);  
  bufImage.getGraphics().drawImage(image,0,0,null);  
  int   x   =   (int)(image.getWidth(null)/w);  
  int   y   =   (int)(image.getHeight(null)/h);  
  images   =   new   BufferedImage[x*y];  
  for(int   j=0;j<y;j++)   {  
  int   yy   =   j*h;  
  for(int   i=0;i<x;i++)   {  
  images[j*x+i]   =   bufImage.getSubimage(i*w,yy,w,h);  
  }  
  }  
  return   images;  
  }  
   
  static   public   Image[]   split_count(String   imageFile   ,   int   x   ,   int   y)   {  
  Image[]   images   =   new   Image[0];  
  Image   image   =   getImageFromFile(imageFile);  
  if(   image   ==   null   )   return   images;  
  BufferedImage   bufImage   =   new   BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_4BYTE_ABGR);  
  bufImage.getGraphics().drawImage(image,0,0,null);  
  int   w   =   (int)(image.getWidth(null)/x);  
  int   h   =   (int)(image.getHeight(null)/y);  
  images   =   new   BufferedImage[x*y];  
  for(int   j=0;j<y;j++)   {  
  int   yy   =   j*h;  
  for(int   i=0;i<x;i++)   {  
  images[j*x+i]   =   bufImage.getSubimage(i*w,yy,w,h);  
  }  
  }  
  return   images;  
  }  
   
  static   public   Image[]   split_size(Image   image   ,   int   w   ,   int   h)   {  
  Image[]   images   =   new   Image[0];  
  BufferedImage   bufImage   =   new   BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_4BYTE_ABGR);  
  bufImage.getGraphics().drawImage(image,0,0,null);  
  int   x   =   (int)(image.getWidth(null)/w);  
  int   y   =   (int)(image.getHeight(null)/h);  
  images   =   new   BufferedImage[x*y];  
  for(int   j=0;j<y;j++)   {  
  int   yy   =   j*h;  
  for(int   i=0;i<x;i++)   {  
  images[j*x+i]   =   bufImage.getSubimage(i*w,yy,w,h);  
  }  
  }  
  return   images;  
  }  
   
  static   public   Image[]   split_count(Image   image   ,   int   x   ,   int   y)   {  
  Image[]   images   =   new   Image[0];  
  BufferedImage   bufImage   =   new   BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_4BYTE_ABGR);  
  bufImage.getGraphics().drawImage(image,0,0,null);  
  int   w   =   (int)(image.getWidth(null)/x);  
  int   h   =   (int)(image.getHeight(null)/y);  
  images   =   new   BufferedImage[x*y];  
  for(int   j=0;j<y;j++)   {  
  int   yy   =   j*h;  
  for(int   i=0;i<x;i++)   {  
  images[j*x+i]   =   bufImage.getSubimage(i*w,yy,w,h);  
  }  
  }  
  return   images;  
  }  
   
  static   public   Image   getImageFromFile(String   imageFile)   {  
  File   file   =   new   File(imageFile);  
  if(!file.exists())   {  
  System.out.println   ("文件不存在:"+imageFile);  
  return   null;  
  }  
  if(!file.isFile())   {  
  System.out.println   (imageFile+"   不是一个文件");  
  return   null;  
  }  
  Image   image   =   Toolkit.getDefaultToolkit().createImage(imageFile);  
  return   image;  
  }  
   
  public   static   void   main(String   args[])   {  
  String   file   =   "UserImages.gif";  
  Image   image   =   getImageFromFile(file);  
  JFrame   f   =   new   JFrame("测试程序");  
  f.setBounds(300,200,400,300);  
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  Container   c   =   f.getContentPane();  
  c.setLayout(new   FlowLayout());  
  JButton   bz   =   new   JButton(new   ImageIcon(image));  
  c.add(bz);  
  Image[]   is   =   split_count(image,11,1);  
  for(int   i=0;i<is.length;i++)   {  
  JButton   b   =   new   JButton(new   ImageIcon(is[i]));  
  c.add(b);  
  }  
  f.setVisible(true);  
  }  
  }  
  Top

2 楼ideal2004(小青莲居士)回复于 2005-06-04 22:25:03 得分 0

谢谢了!!Top

相关问题

  • 把dialog或form分成两部分,然后可以象分成两部分的splitView一样可以调整大小,怎么实现?
  • 如何用DW把图片分成几部分?
  • jsp中将一个页面分成两个显示部分
  • Photoshop中如何将一个图像平均分成两部分
  • 怎么把一个多级目录分成2部分
  • 为什么会被分成3部分而不是结果呢?
  • 为什么同样字体,同样字符宽度的 普通文本框 和 密码框 大小不一样??
  • 怎样判断两个同样大小的单色位图的相似度?
  • 请问如何在任意打印机上输出同样大小的字体?
  • 如何使MDI窗体与屏幕同样大小(新手请教)

关键词

  • null
  • bufferedimage
  • images
  • import java

得分解答快速导航

  • 帖主:ideal2004
  • abcdhy

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo