zoukankan      html  css  js  c++  java
  • 使用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"));  
        }  
        
    }
  • 相关阅读:
    Salesforce LWC学习(三十七) Promise解决progressindicator的小问题
    Salesforce Consumer Goods Cloud 浅谈篇三之 行动计划(Action Plan)相关配置
    python 3.7环境安装并使用csv
    分享数据库优化文章
    php 5.4 var_export的改进
    CentOS7 启动 firewalld 防火墙失败,查看日志提示超时
    使用 SSL 加密的 JDBC 连接 SAP HANA 数据库
    CAS学习笔记一:CAS 授权服务器简易搭建
    202110期自考总结
    自定义 OpenShift s2i 镜像与模板——OracleJDK8
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/8547304.html
Copyright © 2011-2022 走看看