首页 > 文章列表 > Java如何实现bmp和jpeg图片格式互转

Java如何实现bmp和jpeg图片格式互转

java
264 2023-05-06

Java如何实现bmp和jpeg图片格式互转

Bmp转Jpeg

public static String bmp2Jpeg(String filePath, String outPath) {

    try {

        long start = System.currentTimeMillis();

        // 加载bmp图片

        File file = new File(filePath);

        Image img = ImageIO.read(file);

        BufferedImage tag = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);

        tag.getGraphics().drawImage(img.getScaledInstance(img.getWidth(null), img.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);



        // 输出为Jpeg

        FileOutputStream out = new FileOutputStream(outPath);

        // JPEGImageEncoder可适用于其他图片类型的转换

        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

        encoder.encode(tag);

        out.close();

        

        log.info("bmp 转 JPEG,共耗时:  " + (System.currentTimeMillis() - start) + " 毫秒");

        return outPath;

    } catch (IOException e) {

        e.printStackTrace();

    }

        return outPath;

    }

Jpeg转Bmp

public static void jpeg2Bmp(String inputPath, String outputPath) {

    try {

        long start = System.currentTimeMillis();

    

        // 加载Jpeg图片资源

        FileImageInputStream fiis = new FileImageInputStream(new File(inputPath));

        FileImageOutputStream fios = new FileImageOutputStream(new File(outputPath));

        ImageReader jpegReader = null;

        Iterator<ImageReader> it1 = ImageIO.getImageReadersByFormatName("jpeg");

        if (it1.hasNext()) {

            jpegReader = it1.next();

        }

        jpegReader.setInput(fiis);

        

        ImageWriter bmpWriter = null;

        Iterator<ImageWriter> it2 = ImageIO.getImageWritersByFormatName("bmp");

        if (it2.hasNext()) {

            bmpWriter = it2.next();

        }

        bmpWriter.setOutput(fios);

        BufferedImage br = jpegReader.read(0);

        bmpWriter.write(br);

        fiis.close();

        fios.close();

        

        log.info("jpeg 转 bmp,共耗时:" + (System.currentTimeMillis() - start) + " 毫秒");

    } catch (IOException e) {

        e.printStackTrace();

    }

}