將一個遠程地址解析成圖片
/**
* 遠程圖片轉BufferedImage
* @param destUrl 遠程圖片地址
* @return BufferedImage image
*/
public static BufferedImage getBufferedImageDestUrl(String destUrl) {
HttpURLConnection conn = null;
BufferedImage image = null;
try {
URL url = new URL(destUrl);
conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == 200) {
image = ImageIO.read(conn.getInputStream());
return image;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
return image;
}
將圖片切成一個圓形
/**
* 將圖片處理爲圓形圖片
* 傳入的圖片必須是正方形的纔會生成圓形 如果是長方形的比例則會變成橢圓的
*
* @param buffImg1
* @return
*/
public static BufferedImage transferImgForRoundImgage(BufferedImage buffImg1){
BufferedImage resultImg = null;
try {
if (MyTools.isEmpty(buffImg1)) {
return null;
}
resultImg = new BufferedImage(buffImg1.getWidth(), buffImg1.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = resultImg.createGraphics();
Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, buffImg1.getWidth(), buffImg1.getHeight());
// 使用 setRenderingHint 設置抗鋸齒
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
resultImg = g.getDeviceConfiguration().createCompatibleImage(buffImg1.getWidth(), buffImg1.getHeight(),
Transparency.TRANSLUCENT);
g = resultImg.createGraphics();
// 使用 setRenderingHint 設置抗鋸齒
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setClip(shape);
g.drawImage(buffImg1, 0, 0, null);
g.dispose();
} catch (Exception e) {
System.out.println("讀取圖片異常" + e.getMessage()+ e);
}
return resultImg;
}
將一段文字添加到圖片上
/**
*
* @param image 圖片
* @param text 需要添加的文字
* @param width 添加文字的水平位置
* @param height 添加文字的垂直位置
* @param size 文字大小
* @param color 文字顏色
* @return
* @throws IOException
*/
public static BufferedImage imgAddText(BufferedImage image,String text,int width,int height,int size,Color color) throws IOException {
Graphics2D g = image.createGraphics();
// 畫
g.setColor(color);
g.setBackground(Color.white);
Font font = new Font("黑體,Arial", Font.BOLD, size); // 字體大小
g.setFont(font);
g.drawString(text, width, height);
g.dispose();
image.flush();
return image;
}
在圖片中拼接另一張圖片
/**
*
* @Title: 圖片拼接工具
* @Description: 生成海報並返回java.awt.image.BufferedImage(圖片)
* @param backendImage 背景圖片
* @param topImage 二維碼圖片
* @param x 距離右下角的X偏移量
* @param y 距離右下角的Y偏移量
* @param width 圖片寬度
* @param height 圖片高度
* @param alpha
* 透明度, 選擇值從0.0~1.0: 完全透明~完全不透明
* @return BufferedImage
* @throws IOException
*/
public static BufferedImage watermark(BufferedImage backendImage, BufferedImage topImage, int x, int y,int width,int height, float alpha) throws IOException {
// 創建Graphics2D對象,用在底圖對象上繪圖
Graphics2D g2d = backendImage.createGraphics();
// 在圖形和圖像中實現混合和透明效果
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
// 繪製
g2d.drawImage(qrCodeImage, x, y, width, height, null);
g2d.dispose();// 釋放圖形上下文使用的系統資源
return backendImage;
}
未完待續。。。。