life02

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  197 随笔 :: 3 文章 :: 37 评论 :: 0 Trackbacks
 
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();
}

}
}
posted on 2012-03-14 19:01 life02 阅读(353) 评论(0)  编辑 收藏 引用 所属分类: Android开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理