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("结束");
}
}
给图片加图片边框 图片边框要求为PNG格式
猜你喜欢
转载自my.oschina.net/u/3154333/blog/2872766
今日推荐
周排行