1、package com.tzx.a;import java.awt.BorderLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.image.BufferedImage;import
2、 java.awt.image.RenderedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextAre
3、a;import javax.swing.JTextField;import javax.swing.UIManager;public class PicPro extends WindowAdapter implements ActionListenerJFrame frame;JPanel panel1,panel3,panel4,panel5;JTextField tf1,tf2,tf3,tf4;JTextArea ta;JLabel label1,label2,label3,label4;JButton button,button1,button2;Font font1=new Fon
4、t(“宋体“,Font.PLAIN,20);Font font2=new Font(“宋体“,Font.PLAIN,16);File filein;File fileout;Filefilelist;File wzw=new File(“wzw“);int width;int height;boolean flag_in; /输入文件夹boolean flag_out; /输出文件夹boolean flag_num; /缩放像素PicPro()frame=new JFrame(“批量图片处理“);frame.setSize(500,600);frame.setLocation(300,100)
5、;frame.setResizable(false);panel1=new JPanel();panel3=new JPanel();panel4=new JPanel();panel5=new JPanel();tf1=new JTextField(30);tf2=new JTextField(30);tf3=new JTextField(7);tf4=new JTextField(7);tf1.setFont(font1);tf2.setFont(font1);tf3.setFont(font1);tf4.setFont(font1);label1=new JLabel(“源文件夹“);l
6、abel2=new JLabel(“目标文件夹 “);label3=new JLabel(“转换后 X:“);label4=new JLabel(“转换后 Y:“);label1.setFont(font2);label2.setFont(font2);label3.setFont(font2);label4.setFont(font2);ta=new JTextArea();ta.setFont(font2);ta.setEditable(false);ta.setLineWrap(true);JScrollPane scroller=new JScrollPane(ta);scroller
7、.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);frame.add(scroller,BorderLayout.CENTER);ta.setText(“请注意各项的填写格式,区分大小写:n“+“源文件夹填写要转换图片集所在文件夹 ,例如D:picture;n“+“目标文件夹填写转换后保存的文件夹 ,例如C:picture;n“+“转换后 X:填写希望转换后图片的宽度( 整数);n“+“转换后 Y:填写希望转换后图片的高度(整数);n“+“当源文件夹中有非图片格式文件或文件夹时,程序会自动选择出图片文件n“+“
8、Change 之前请先 Check,当目标文件夹中重名情况时,程序会给出是否覆盖提示 .n“+“ttt 程序问题发送到 n“);button=new JButton(“Change“);button1=new JButton(“Check“);button2=new JButton(“Check“);button.setFont(font2);button1.setFont(font2);button2.setFont(font2);panel1.setLayout(new GridLayout(3,1);panel1.add(panel3);panel1.add(panel4);panel1
9、.add(panel5);panel3.add(label1);panel3.add(tf1);panel3.add(button1);panel4.add(label2);panel4.add(tf2);panel4.add(button2);panel5.add(label3);panel5.add(tf3);panel5.add(label4);panel5.add(tf4);panel5.add(button);frame.add(panel1,BorderLayout.NORTH);frame.setVisible(true);button.addActionListener(thi
10、s);button1.addActionListener(this);button2.addActionListener(this);frame.addWindowListener(this);/* TODO 对按钮进行监听* */public void actionPerformed(ActionEvent e)if(e.getSource()=button)flag_num=false;if(checkNum(tf3.getText()=trueheight=(int) Double.parseDouble(tf4.getText();flag_num=true;else flag_num
11、=false;ta.append(“XY 填写格式不正确,请重新填写n“);if(flag_in=trueint cnt=0;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw)File outtemp;try RenderedImage im=convert(width,height,ImageIO.read(filelisti);String outputFilename=“副本“+filelisti.getName();String format=outputFilename.substring(outputFilename.lastInd
12、exOf(.)+1);outtemp=new File(fileout+“+outputFilename);/System.out.println(outputFilename);if(outtemp.exists()=true)int restartChoose=JOptionPane.showConfirmDialog(frame,“有相同名称的文件,是否覆盖?“,“提示“,JOptionPane.OK_CANCEL_OPTION);if(restartChoose=JOptionPane.OK_OPTION)ImageIO.write(im,format,outtemp);ta.appe
13、nd(outtemp.getAbsolutePath();ta.append(“tt“+“Finished“+“n“);cnt+;elsereturn;elseImageIO.write(im,format,outtemp);ta.append(outtemp.getAbsolutePath();ta.append(“tt“+“Finished“+“n“);cnt+;catch (IOException e2) e2.printStackTrace(); catch (Exception e1) e1.printStackTrace();ta.append(“目标文件共“+cnt+“个n“);
14、else if(e.getSource()=button1)flag_in=false;filein=new File(tf1.getText();if(filein.exists()=trueflag_in=true;filelist=filein.listFiles();for(int i=0;ifilelist.length;i+)if(filelisti.isFile()=false)filelisti=wzw;String ispic;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw)String temp;temp=filelist
15、i.getName();ispic=temp.substring(temp.lastIndexOf(.)+1);if(ispic.equals(“jpg“)=false)ta.append(“源文件列表:n“);int num=0;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw)ta.append(filelisti+“n“);num+;ta.append(“源文件共“+num+“ 个n“);ta.append(“n“);elseta.append(“n 源文件夹不存在或者输入格式错误!n“);flag_in=false;else if(e.
16、getSource()=button2)flag_out=false;fileout=new File(tf2.getText();if(fileout.exists()=trueflag_out=true;else ta.append(“n 目标文件夹不存在或者输入格式错误!n“);flag_out=false;public void windowClosing(WindowEvent e) System.exit(0);public static void main(String args) throws Exception try UIManager.setLookAndFeel(“co
17、m.sun.java.swing.plaf.windows.WindowsLookAndFeel“); catch(Exception e) new PicPro();/* TODO 图片缩放* */public static BufferedImage convert(int width,int height,BufferedImage input)throws ExceptionBufferedImage output=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);Image image=input.getScaled
18、Instance(output.getWidth(),output.getHeight(),Image.SCALE_SMOOTH);output.createGraphics().drawImage(image,null,null);return output;/* TODO 判断填写的像素是否是整数* */public static boolean checkNum(String s) /判断 String 是否为可转化为数字的字符串int i;boolean flag=false;char paste_ch=s.toCharArray();for(i=0;is.length();i+)if(paste_chi!=1)break;if(s.contains(“-“)=truebreak;flag=true;return flag;