1. 程式人生 > >java 圖片合成到A4紙上

java 圖片合成到A4紙上

                               最近2天在做移動端的專案,需要安卓 ios將拍完照的身份證正面和反面以Base64字串傳遞給我,我拿到2個圖片的地址,將這2張圖片通過後臺java技術合成到一張A4紙上之後以圖片格式給移動端一個URL地址。所以利用了java的檔案流操作。

                      java中的檔案操作很複雜,而且只有2個要點第一:將檔案解析成流,將流讀取出來,或者將一些資料寫入到檔案中去,

而針對圖片的操作自己需要利用圖片的流進行讀取,另外用到了繪圖工具,首先繪製一張A4紙,之後將圖片解析而成流的形式,繪製到A4紙上,最後將整個大圖片寫入到一個新的檔案中去:來上程式碼:

               引數說明: 第一張和第二張圖片路徑   <span style="font-family: Arial, Helvetica, sans-serif;">firstimagepath    </span><span style="font-family: Arial, Helvetica, sans-serif;">secondimagepath</span>
                          合成A4紙上的圖片路徑    <span style="font-family: Arial, Helvetica, sans-serif;">mbdest</span>
                          設定A4紙的寬度  高度    width  height
                          合成圖片寬度:<span style="font-family: Arial, Helvetica, sans-serif;">widthCut</span>
                          <span style="font-family: Arial, Helvetica, sans-serif;">float cut_proportion_paper=1.75f;</span>
 
/**
* 2張圖片檔案合成到A4紙上
*/
public static void CompieImage(String mbdest,int widthCut,float cut_proportion_paper,int width,int height,String firstimagepath,String secondimagepath){


int heightCut = (int)(widthCut/cut_proportion_paper);
//合成圖片
//搞出2個類
BufferedImage image = new BufferedImage(width, height,
BufferedImage.SCALE_DEFAULT);
Graphics graphics = image.getGraphics();
BufferedImage img = null;
BufferedImage img2 = null;
try {
//分別從檔案中讀取流::
//第一張圖片的全路徑
img = ImageIO.read(new FileInputStream(firstimagepath));
//第二張圖片的全路徑
img2 = ImageIO.read(new FileInputStream(secondimagepath));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();

}
//畫出一個白色的A4紙::
graphics.setColor(Color.white);
graphics.fillRect(1, 0, width, height);
int positionPaperX = width/2 - widthCut/2;
int positionPaperY = height/2 - heightCut;
graphics.drawImage(img, positionPaperX, positionPaperY, widthCut, heightCut, null);
graphics.drawImage(img2, positionPaperX, positionPaperY+heightCut, widthCut, heightCut,null);
graphics.dispose();
//------合成檔案為檔案起名字

//將檔案寫入到新的目的地mbdest目的地地址
try {
ImageIO.write(image, "JPG", new File(mbdest));
} catch (IOException e) {
e.printStackTrace();
}

}

 哈哈大功告成!!!!!!!!