JAVA 圖片png和jpeg格式的轉化方式


最近遇到一些需求,需要對圖片做格式轉化,比如將png圖片轉為jpeg,或者將jpeg轉為png,網上有部分代碼,但是發現有些是不正確的,

畢竟png是4通道,32位,而jpeg是3通道,24位,因此兩個圖片之間轉化時,肯定需要注意這些問題,而不是簡單的圖片內容的轉化。

下面小編是小編親測實用的java方法:

 

public class ImageConvert {

    private static final String IMAGE_PATH_PNG = "F:\\Gis開發\\學習資料\\tile\\3_0_1.png";
    private static final String IMAGE_PATH_PNG_NEW = "F:\\Gis開發\\學習資料\\tile\\3_0_1_new.png";
    private static final String IMAGE_PATH_JPEG = "F:\\Gis開發\\學習資料\\tile\\3_0_1.jpg";
    private static final String IMAGE_PATH_JPEG_NEW = "F:\\Gis開發\\學習資料\\tile\\3_0_1_new.jpg";

    public static void main(String[] args) {
        png2jpeg();
    }

    public static void png2jpeg() {
        //讀取圖片
        FileOutputStream fos =null;
        try {
            BufferedImage bufferedImage = ImageIO.read(new File(IMAGE_PATH_PNG));
            //轉成jpeg、
            BufferedImage bufferedImage1 = new BufferedImage(bufferedImage.getWidth(),
                                                             bufferedImage.getHeight(),
                                                             BufferedImage.TYPE_INT_RGB);
            bufferedImage1.createGraphics().drawImage(bufferedImage,0,0, Color.white,null);
            fos = new FileOutputStream(IMAGE_PATH_JPEG_NEW);
            ImageIO.write(bufferedImage,"jpg",fos);
            fos.flush();
        } catch (IOException e) {
            e.printStackTrace();
            try {
                fos.close();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
    }

    public static void jpeg2png() {
        //讀取圖片
        try {
            BufferedImage bufferedImage = ImageIO.read(new File(IMAGE_PATH_JPEG));
            //轉成png、
            BufferedImage bufferedImage1 = new BufferedImage(bufferedImage.getWidth(),
                                                            bufferedImage.getHeight(),
                                                            BufferedImage.TYPE_INT_ARGB);
            bufferedImage1.createGraphics().drawImage(bufferedImage,0,0, Color.white,null);
            FileOutputStream fos = new FileOutputStream(IMAGE_PATH_PNG_NEW);
            ImageIO.write(bufferedImage1,"png",fos);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM