给图片加图片边框 图片边框要求为PNG格式

package com.product.utils;

import javax.imageio.ImageIO;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 * 图片边框类
 * 
 * @author 剑来V
 *
 */
public final class ImageBorderUtil {

	/**
	 * 
	 * @param url
	 *            需要加边框的图片URL地址
	 * @param pressImg
	 *            边框图片的存放路径
	 * @param targetImg
	 *            图片的路径
	 * @param handleImg
	 *            新处理的图片路径
	 */

	public static void pressImage(String url, String pressImg, String targetImg, String handleImg) {
		try {
			int maxLength = 0;// 求出绘制的正方形长度
			int direction = 0;// 默认 0正方形 1横向长方形 2纵向长方形
			// 目标文件
			File _file = toFile(url, new File(targetImg));
			Image src = ImageIO.read(_file);
			int width = src.getWidth(null);
			int height = src.getHeight(null);
			// 边框文件
			File _filebiao = new File(pressImg);
			Image src_biao = ImageIO.read(_filebiao);

			if (width == height) {
				maxLength = width;
			} else if (width - height > 0) {
				maxLength = width;
				direction = 1;
			} else {
				maxLength = height;
				direction = 2;
			}
			// 调整坐标
			int x = 0, y = 0;
			switch (direction) {
			case 1:// 横向长方形
				y = (maxLength - height) / 2;
				break;
			case 2:// 纵向长方形
				x = (maxLength - width) / 2;
				break;
			}
			BufferedImage image = new BufferedImage(maxLength, maxLength, BufferedImage.TYPE_INT_RGB);
			Graphics2D g = image.createGraphics();
			g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
			g.setBackground(Color.WHITE);// 设置白色背景填充
			g.clearRect(0, 0, maxLength, maxLength);// 重置画布进行填充
			g.drawImage(src, 0 + x, 0 + y, width, height, null);// 底层画布
			g.drawImage(src_biao, 0, 0, maxLength, maxLength, null);// 边框PNG图片覆盖
			g.dispose();
			// 直接修改源文件
			// FileOutputStream out = new FileOutputStream(targetImg);
			// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			// encoder.encode(image);
			// out.flush();
			// out.close();
			// 生成新的文件
			File sf = new File(handleImg);
			ImageIO.write(image, "jpg", sf); // 保存图片
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 文件保存
	 *
	 * @param link
	 *            图片链接
	 * @param file
	 *            存入的文件地址
	 * @return 下载的文件
	 */
	public static File toFile(String link, File file) {
		try {
			URL url = new URL(link);
			URLConnection uri = url.openConnection();
			// 获取数据流
			InputStream ins = uri.getInputStream();
			OutputStream os = new FileOutputStream(file);
			int bytesRead = 0;
			byte[] buffer = new byte[8192];
			while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
				os.write(buffer, 0, bytesRead);
			}
			os.close();
			ins.close();
			return file;
		} catch (Exception e) {
			return null;
		}
	}

	public static void main(String[] args) {
		pressImage("http://imgsrc.baidu.com/imgad/pic/item/7af40ad162d9f2d3dd3f80d6a2ec8a136327ccd9.jpg", "D:\\imgin\\99-FS.png", "D:\\imgout\\test111111111.jpg", "D:/imgout/" + "test2018" + "." + "jpg");
		System.out.println("结束");
	}

}

猜你喜欢

转载自my.oschina.net/u/3154333/blog/2872766