http://java-boy.iteye.com/blog/566063
寫一個向圖片內嵌入另一張圖片程序,新的需要嵌入的圖片需要旋轉,并放在該放的位置上。
步驟:
準備工作:將舊的圖片,需要嵌入圖片的地方,透明化處理,建議使用png(gif有鋸齒)。
1.加載倆張圖片。
2.創建一個新的畫布(即圖片)與原來的圖片一邊大。
3.將需要嵌入的圖片,旋轉,并寫入到畫布應該放的位置上。
4.將舊圖片需要蓋在新的圖片上,只露出透明的部分,這樣做的好處兩張圖片可以很好的貼合。
5.調整圖片位置。
代碼:
public class Test2 {
public static void main(String[] args) {
// 加載原圖
BufferedImage back_img = null;
File fpic = new File("/home/xxx/Desktop/yin.png");
try {
back_img = (BufferedImage) ImageIO.read(fpic);
} catch (IOException e) {
e.printStackTrace();
}
int width = back_img.getWidth();
int height = back_img.getHeight();
Graphics2D backg2d = (Graphics2D) back_img.getGraphics();
// 加載新圖
BufferedImage old_img = null;
File fpic2 = new File("/home/xxx/Desktop/zeng.jpg");
try {
old_img = (BufferedImage) ImageIO.read(fpic2);
} catch (IOException e) {
e.printStackTrace();
}
// 背景透明
BufferedImage new_img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d2 = new_img.createGraphics();
new_img = g2d2.getDeviceConfiguration().createCompatibleImage(height, width, Transparency.TRANSLUCENT);
g2d2.dispose();
g2d2 = new_img.createGraphics();
// // 確定旋轉圓心
AffineTransform origXform = g2d2.getTransform();
AffineTransform newXform = (AffineTransform) (origXform.clone());
newXform.rotate(Math.toRadians(8.0), width, height);
g2d2.setTransform(newXform);
g2d2.drawImage(old_img, 70, 65, 130, 100, null);
g2d2.setTransform(origXform);
g2d2.drawImage(back_img, 0, 0, null);
g2d2.dispose();
try {
ImageIO.write(new_img, "png", new File("/home/xxx/Desktop/test2.png"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}