请问怎么将一幅图片分成9个同样大小的部分??并显示出来
请问怎么将一幅图片分成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




