Java 图片合并类详解编程语言

package com.loyom.mp.handle; 
  
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
  
public class ImageHandle { 
  
    public BufferedImage marge(String first, String last, boolean isVertical) { 
        BufferedImage one = this.readImage(first); 
        BufferedImage two = this.readImage(last); 
        if (isVertical) { 
            return this.mergeTwoImageByVertical(one, two); 
        } else { 
            return this.mergeTwoImageByHorizontal(one, two); 
        } 
    } 
  
    public void saveImage(String savePath, BufferedImage image) { 
        try { 
            File file = new File(savePath); 
            ImageIO.write(image, "jpg", file);// 写图片   
        } catch (IOException ex) { 
            ex.printStackTrace(); 
        } 
    } 
  
    private BufferedImage mergeTwoImageByVertical(BufferedImage one, BufferedImage two) { 
        int width = this.getWidth(one); 
        int height = this.getHeight(one); 
  
        int[] oneRPG = this.readImageRPG(one); 
        int[] twoRPG = this.readImageRPG(two); 
  
        BufferedImage result = new BufferedImage(width, height * 2, BufferedImage.TYPE_INT_RGB); 
        result.setRGB(0, 0, width, height, oneRPG, 0, width); 
        result.setRGB(0, height, width, height, twoRPG, 0, width); 
        return result; 
    } 
  
    private BufferedImage mergeTwoImageByHorizontal(BufferedImage one, BufferedImage two) { 
        int width = this.getWidth(one); 
        int height = this.getHeight(one); 
  
        int[] oneRPG = this.readImageRPG(one); 
        int[] twoRPG = this.readImageRPG(two); 
  
        BufferedImage result = new BufferedImage(width * 2, height, BufferedImage.TYPE_INT_RGB); 
        result.setRGB(0, 0, width, height, oneRPG, 0, width); 
        result.setRGB(width, 0, width, height, twoRPG, 0, width); 
        return result; 
    } 
  
    private int[] readImageRPG(BufferedImage image) { 
        int width = this.getWidth(image); 
        int height = this.getHeight(image); 
        int[] imageRPG = new int[width * height];// 从图片中读取RGB   
        imageRPG = image.getRGB(0, 0, width, height, imageRPG, 0, width); 
        return imageRPG; 
    } 
  
    private int getWidth(BufferedImage image) { 
        if (image == null) { 
            return 0; 
        } 
        return image.getWidth(); 
  
    } 
  
    private int getHeight(BufferedImage image) { 
        if (image == null) { 
            return 0; 
        } 
        return image.getHeight(); 
    } 
  
    private BufferedImage readImage(String path) { 
        try { 
            File file = new File(path); 
            return ImageIO.read(file); 
        } catch (IOException ex) { 
            ex.printStackTrace(); 
        } 
        return null; 
    } 
}

来自:http://my.oschina.net/u/2370543/blog/487821

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

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

相关推荐

发表回复

登录后才能评论