最近遇到一些需求,需要對圖片做格式轉化,比如將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(); } } }