java实现图片【裁剪】
以下代码是 图片对半横向裁剪(可修改,可直接打包)
public class ImageCropping extends JFrame implements ActionListener {
private static String imageF = "png";
private static String path = "";
JLabel tip,jcbTitle;
JTextField imagePath;
JPanel jp1,jp2,jp3;
JButton jb1,jb2;
JComboBox jcb;
public static void main(String[] args) {
new ImageCropping();
}
public static void cutHalfImage(String src,String dest,String dest2) throws IOException{
Iterator iterator = ImageIO.getImageReadersByFormatName(imageF);
ImageReader reader = (ImageReader)iterator.next();
InputStream in=new FileInputStream(src);
ImageInputStream iis = ImageIO.createImageInputStream(in);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
int imageIndex = 0;
int width = reader.getWidth(imageIndex);
int height = reader.getHeight(imageIndex);
Rectangle rect = new Rectangle(0, 0, width, height/2);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0,param);
ImageIO.write(bi, imageF, new File(dest));
Rectangle rect2 = new Rectangle(0, height/2, width, height);
param.setSourceRegion(rect2);
bi = reader.read(0,param);
ImageIO.write(bi, imageF, new File(dest2));
}
public static void photoRun() {
File fils = new File(path);
File files[] = fils.listFiles();
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getAbsolutePath();
if (!files[i].isFile()) {
continue;
}
String name = path + "\\out\\";
if (!new File(name).exists()) {
new File(name).mkdir();
}
try {
cutHalfImage(fileName, name + i + "." + imageF, name + i
+ "-1." + imageF);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public ImageCropping(){
this.setTitle("图片裁剪");
this.setSize(560, 350);
this.setLayout(new GridLayout(2,1));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
tip = new JLabel("输入文件夹地址:");
jcbTitle = new JLabel(" 图片格式");
imagePath = new JTextField(20);
jb1 = new JButton("横向中心裁剪图片");
Dimension preferredSize = new Dimension(150,40);
jb1.setPreferredSize(preferredSize);
jb1.addActionListener(this);
jcb = new JComboBox();
jcb.setBounds(50, 50, 100, 100);
jcb.setToolTipText("格式选择");
jcb.setBackground(Color.LIGHT_GRAY);
jcb.addItem("png");
jcb.addItem("jpg");
jcb.addItem("jpeg");
jcb.setVisible(true);
jp1.add(tip);
jp1.add(imagePath);
jp2.add(jb1);
jp2.add(jp3);
jp3.add(jcbTitle);
jp3.add(jcb);
this.add(jp1);
this.add(jp2);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == jb1){
if(imagePath.getText() != "" && imagePath.getText().length() != 0){
imageF = jcb.getSelectedItem().toString();
path = imagePath.getText();
System.out.println("imageF:"+imageF +"\n"
+ "path:"+path);
photoRun();
}else {
return;
}
}
}
}