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();
}
}
}