调整图像文件的大小

时间:2013-03-12 04:47:03

标签: java file file-io copy

在Java中,我将图像文件从一个位置复制到另一个位置。程序正在正常执行,但我希望目标文件大小与源文件大小不同。有没有其他方法可以在新位置调整文件大小?我使用以下代码:

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }

    public static void copyFile(File sourceFile, File destFile)
            throws IOException {
        if (!destFile.exists()) {
            destFile.createNewFile();
        }

        FileChannel source = null;
        FileChannel destination = null;
        try {
            source = new FileInputStream(sourceFile).getChannel();
            destination = new FileOutputStream(destFile).getChannel();

            // previous code: destination.transferFrom(source, 0, source.size());
            // to avoid infinite loops, should be:
            long count = 0;
            long size = source.size();
            while ((count += destination.transferFrom(source, count, size
                    - count)) < size)
                ;
        } finally {
            if (source != null) {
                source.close();
            }
            if (destination != null) {
                destination.close();
            }
        }
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            File sourceFile = new File(
                    "d:/adesh/golden_temple_amritsar_india-normal.jpg");

            File destFile = new File(
                    "d:/adesh2/golden_temple_amritsar_india-normal.jpg");

            copyFile(sourceFile, destFile);
        } catch (Exception ex) {
        }

    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
}

1 个答案:

答案 0 :(得分:1)

以下是根据您的规范调整图像大小的代码。 在copyFile方法中,

  

int width = 100,height = 75; / *设置宽度和高度* /

     

BufferedImage inputImage = ImageIO.read(sourceFile);

     

BufferedImage outputImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

     

Graphics2D g = outputImage.createGraphics();

     

g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);

     

g.clearRect(0,0,宽度,高度);

     

g.drawImage(inputImage,0,0,width,height,null);

     

g.dispose();

     

ImageIO.write(outputImage, “JPG”,destFile); / *第一个参数是BufferedImage的对象,第二个参数是你要编写的图像类型,你可以使用jpg,bmp,png等,第三个参数是目标文件对象。 * /

相关问题