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;
    }
}
时间: 2024-12-29 10:52:38

Java 图片合并类的相关文章

Java图片工具类,完成图片的截取和任意缩放

package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRas

java图片裁剪处理工具类代码

剪切前:  原文:java图片裁剪处理工具类代码 源代码下载地址:http://www.zuidaima.com/share/1550463351786496.htm 剪切后:  package com.zuidaima.zhangjun.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import

java 图片处理工具类

import java.awt.Image;  import java.awt.Rectangle;  import java.awt.geom.AffineTransform;  import java.awt.image.AffineTransformOp;  import java.awt.image.BufferedImage;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOExcepti

Java图片高保真缩放工具类

Java图片高保真缩放 package com.xindai.auth.service.util; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEG

圆形 / 圆角图片工具类——CircleImageManager

这个类可以实现圆角,或者是圆形图片的操作. CircleImageManager.java package com.kale.utils; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import

深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

周志明的<深入理解Java虚拟机>很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉.但知识不得不学,于是天天看,反复看,就慢慢的理解了.我其实不想说这种硬磨的方法有多好,我甚至不推荐,我建议大家阅读这本书时,由浅入深,有舍有得,先从宏观去理解去阅读,再慢慢深入,有条不紊的看下去.具体来说,当你看书的某一部分时,先看这部分的章节名,了解这部分这一章在讲什么,然后再看某一章,我拿"类文件结构"这一章来说,我必须

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.idea开发. 一.图片上传还是使用的这款jq插件.前端部署这款插件,不用说了吧.效果图       二.前台代码只需要盖一个位置.因为是比较好用的插件.插件样式自行修改. 三.后台代码. 后面看不见的. 这个图片上传主要是自己写了几个函数.让图片储存更加方便.分成了年月日储存.但是后期遍历比较困难,

浅析Java.lang.ProcessBuilder类

最近由于工作需要把用户配置的Hive命令在Linux环境下执行,专门做了一个用户管理界面特地研究了这个不经常用得ProcessBuilder类.所以把自己的学习的资料总结一下. 一.概述      ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法.在J2SE 1.5之前,都是由Process类处来实现进程的控制管理.      每个 ProcessBuilder 实例管理一个进程属性

图片处理类(图片水印 图片缩放)

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等功能 1 import java.awt.AlphaComposite; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5 import java.awt.Graphics2D; 6 import java.awt.Image; 7 imp