如何在圖上再放置另一張圖?

java

方法很簡單,先開啟一張圖當基底,取得此基底的長寬建立一個BufferedImage,再拿這個BufferImage的畫筆Graphics,把基底圖畫上去,再來取得要放置在這張基底圖上的圖,依照設定坐標,畫在BufferedImage上,再來只要輸出就可以了。

首先先找二張圖,如果找不到的話可以下載下面二張圖

1.jpg 是高雄的旗津,這張當基底圖

1.jpg

2.jpg  這張是台南有名的矮仔成蝦仁飯,這張要印在1.jpg 上

2.jpg

這張就是印在坐標150,113上的結果,可以自己加上alpha 透明度。

out.jpg

程式碼如下:


package tool;
public class Image {
/**
*
* @param 背景圖,基底
* @param 要印上去的圖
* @param 輸出位置
* @param 印上的圖x坐標
* @param 印上的圖y坐標
*/
public void composePic(String bgfilesrc, String logosrc, String outsrc,
int x, int y) {
try {
java.io.File bgfile = new java.io.File(bgfilesrc);
java.awt.Image bg_src = javax.imageio.ImageIO.read(bgfile);
java.io.File logofile = new java.io.File(logosrc);
java.awt.Image logo_src = javax.imageio.ImageIO.read(logofile);
int bg_width = bg_src.getWidth(null);
int bg_height = bg_src.getHeight(null);
int logo_width = logo_src.getWidth(null);
int logo_height = logo_src.getHeight(null);
java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(bg_width, bg_height,
java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D g2d = tag.createGraphics();
g2d.drawImage(bg_src, 0, 0, bg_width, bg_height, null);
g2d.setComposite(java.awt.AlphaComposite.getInstance(java.awt.AlphaComposite.SRC_ATOP, 1.0f));
// 透明度設置開始,1.0是不透明,0是全透
g2d.drawImage(logo_src, x, y, logo_width, logo_height, null);
g2d.setComposite(java.awt.AlphaComposite.getInstance(java.awt.AlphaComposite.SRC_OVER)); // 透明度設置結束
java.io.FileOutputStream out = new java.io.FileOutputStream(outsrc);
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
Image image = new Image();
image.composePic(“d:/1.jpg", “d:/2.jpg", “d:/out.jpg", 150, 113);
}
}

 

本文出處 archives

Be the first to comment on "如何在圖上再放置另一張圖?"

Leave a comment

Your email address will not be published.


*