原文地址:http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
   * 图二的位置 从左上角开始
   * @param x
   * @param y
   */
  public void createPicTwo(int x,int y)
  {
      try
      {
        //读取第一张图片
        File fileOne = new File("c:\\1.gif");
        BufferedImage ImageOne = ImageIO.read(fileOne);
        int width = ImageOne.getWidth();//图片宽度
        int height = ImageOne.getHeight();//图片高度
        //从图片中读取RGB
        int[] ImageArrayOne = new int[width*height];
        ImageArrayOne = ImageOne.getRGB(0,0,width,height,ImageArrayOne,0,width);
        //对第二张图片做相同的处理
        File fileTwo = new File("c:\\2.gif");
        BufferedImage ImageTwo = ImageIO.read(fileTwo);
        int widthTwo = ImageTwo.getWidth();//图片宽度
        int heightTwo = ImageTwo.getHeight();//图片高度
        int[] ImageArrayTwo = new int[widthTwo*heightTwo];
        ImageArrayTwo = ImageTwo.getRGB(0,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);
         
        //生成新图片
        BufferedImage ImageNew = new BufferedImage(width*2,height,BufferedImage.TYPE_INT_RGB);
        ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置左半部分的RGB
        ImageNew.setRGB(x,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
        File outFile = new File("c:\\out.png");
        ImageIO.write(ImageNew, "png", outFile);//写图片
 
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
  }

 

方法二:解决透明的问题 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
     *
     * @param filesrc
     * @param logosrc
     * @param outsrc
     * @param x 位置
     * @param y 位置
     */
  public void composePic(String filesrc,String logosrc,String outsrc,int x,int y) {
    try {
        File bgfile = new File(filesrc);
        Image bg_src = javax.imageio.ImageIO.read(bgfile);
         
        File logofile = new File(logosrc);
        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);
 
        BufferedImage tag = new BufferedImage(bg_width, bg_height, BufferedImage.TYPE_INT_RGB);
         
        Graphics2D g2d = tag.createGraphics();
        g2d.drawImage(bg_src, 0, 0, bg_width, bg_height, null);
         
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f)); //透明度设置开始 
        g2d.drawImage(logo_src,x,y,logo_width,logo_height, null);           
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); //透明度设置 结束
         
        FileOutputStream out = new FileOutputStream(outsrc);
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(tag);
        out.close();
    }catch (Exception e) {
        e.printStackTrace();
    }
  }
 
  public static void main(String args[]) {
      Long star = System.currentTimeMillis();
      TwoComposePic pic = new TwoComposePic();
      pic.composePic("c:\\bb.gif","c:\\bc.gif","c:\\out_pic.gif",490,360);
      Long end =System.currentTimeMillis();
      System.out.print("time====:"+(end-star));
  }
arrow
arrow
    文章標籤
    android
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()