使用Java合并图片、修改DPI详解编程语言

项目中有时候需要对图片进行DPI、合并、拼接等的处理:

package com.snow.web.a_test; 
 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
 
import javax.imageio.ImageIO; 
 
import com.sun.image.codec.jpeg.JPEGCodec; 
import com.sun.image.codec.jpeg.JPEGEncodeParam; 
import com.sun.image.codec.jpeg.JPEGImageEncoder; 
 
public class Test { 
     
    private static String path = "F://"; 
     
    public static void main(String[] args) throws Exception { 
        System.out.println("======================================="); 
//        String path = "F://test.jpg";   
//      File files = new File(path);   
//      handleDpi(files, 300, 300);  
 
//        String path = "F://";   
        File file1 = new File(path, "1.jpg");   
        File file2 = new File(path, "2.png");   
//        mosaicImage(file1, file2);  
        mergeImage(file1, file2);  
    } 
    /**  
     * 改变图片DPI  
     *  
     * @param file  
     * @param xDensity  
     * @param yDensity  
     * @throws ImageReadException  
     */   
    public static void handleDpi(File file, int xDensity, int yDensity){   
        try {   
            BufferedImage image = ImageIO.read(file);   
            JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(file));   
            JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);   
            jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);   
            jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);   
            jpegEncodeParam.setQuality(0.75f, false);   
            jpegEncodeParam.setXDensity(xDensity);   
            jpegEncodeParam.setYDensity(yDensity);   
            jpegEncoder.encode(image, jpegEncodeParam);   
            image.flush();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
    }  
    /** 
     * 图片拼接 
     * @param file1 左边 
     * @param file2    右边 
     * @throws IOException 
     */ 
    public static void mosaicImage(File file1, File file2) throws IOException {         
        BufferedImage image1 = ImageIO.read(file1);   
        BufferedImage image2 = ImageIO.read(file2);   
   
        BufferedImage combined = new BufferedImage(image1.getWidth() * 2, image1.getHeight(), BufferedImage.TYPE_INT_RGB);   
   
        // paint both images, preserving the alpha channels   
        Graphics g = combined.getGraphics();   
        g.drawImage(image1, 0, 0, null);   
        g.drawImage(image2, image1.getWidth(), 0, null);   
           
        // Save as new image   
        ImageIO.write(combined, "JPG", new File(path, "3.jpg"));   
    }   
    /** 
     * 图片合并 
     * @param file1 左边 
     * @param file2    右边 
     * @throws IOException 
     */ 
    public static void mergeImage(File file1, File file2) throws IOException {         
        BufferedImage image1 = ImageIO.read(file1);   
        BufferedImage image2 = ImageIO.read(file2);   
   
        BufferedImage combined = new BufferedImage(image1.getWidth(), image1.getHeight(), BufferedImage.TYPE_INT_RGB);   
   
        // paint both images, preserving the alpha channels   
        Graphics g = combined.getGraphics();   
        System.out.println(image2.getData()); 
        g.drawImage(image1, 0, 0, null);   
        g.drawImage(image2, 0, 0, image1.getWidth(), image1.getHeight(), null);   
           
        // Save as new image   
        ImageIO.write(combined, "JPG", new File(path, "4.jpg"));   
    }   
     
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/19434.html

(0)
上一篇 2021年7月19日 22:10
下一篇 2021年7月19日 22:10

相关推荐

发表回复

登录后才能评论