java-自定義圖片處理的工具類

將一個遠程地址解析成圖片

/**
 * 遠程圖片轉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;
}

未完待續。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章