二張圖合成一張圖左右二邊

這是一個十分簡單的程式,主要的功用在於把二張size一樣的圖,合成在一張圖的左右二邊,程式寫的蠻死的,一定要size一樣,有興趣的人可以自己改成動態的二張圖。

首先我們先找了二張圖,就下面二張,如果突然找不到圖的朋友們,可以直接下載下面二張來使用。

圖一,1.jpg

1.jpg

圖二,2.jpg

2.jpg

合成的結果如下,寬應該是原圖的二倍,才可以容的下二張圖,不過因為怕我的blog版面放不下,所以只好縮小了。

out.jpg

程式碼如下:(有一點要注意,圖片太大的話有可能有out of memory的問題喔!)

package tool; 

public class Image {
  /**
   * 圖二位置,從左上角開始
   */
  public void createPicTwo() { 

    try {
      // File Load
      java.io.File fileOne = new java.io.File("d:\\2.jpg");
      java.awt.image.BufferedImage ImageOne = javax.imageio.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);
      // 對第二張圖片做相同處理
      java.io.File fileTwo = new java.io.File("d:\\1.jpg");
      java.awt.image.BufferedImage ImageTwo = javax.imageio.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); 

      // 生成新圖片
      java.awt.image.BufferedImage ImageNew = new java.awt.image.BufferedImage(
          width * 2, height,
          java.awt.image.BufferedImage.TYPE_INT_RGB);
      ImageNew.setRGB(0, 0, width, height, ImageArrayOne, 0, width);// 設置左半部分的RGB
      ImageNew.setRGB(width, 0, widthTwo, heightTwo, ImageArrayTwo, 0,
          widthTwo);// 設置右半部分的RGB
      java.io.File outFile = new java.io.File("d:\\out.jpg");
      javax.imageio.ImageIO.write(ImageNew, "JPEG", outFile);// 寫入圖片 

    } catch (Exception e) {
      e.printStackTrace();
    }
  } 

  public static void main(String args[]) {
    Image image = new Image();
    image.createPicTwo();
  }
}

2 thoughts to “二張圖合成一張圖左右二邊”

發表迴響