Javaの合併のpng画像


パッケージ
org.jimmy.autosearch2019.test。 輸入java.awt.Graphics; 輸入java.awt.image.BufferedImage。 インポートのjava.io.File; 輸入java.io.FileOutputStreamは、 輸入はjava.util.ArrayList; 輸入javax.imageio.ImageIO; パブリック クラスTestMergePic2019080801 { プライベート 静的 最終的な文字列DIR_PATH = "D:/ドキュメント/ 20190808分の201908 / PIC /テスト/" プライベート 静的な 最終文字列PIC_NAME =「test201908081221」プライベート 静的 最終文字列のMERGED_PIC_PATH = DIR_PATH + "testPic2019080801.png" プライベート 静的な 最終文字列のSUFFIX =「PNG」 パブリック 静的 ボイドメイン(文字列[]引数){ テスト(); } パブリック 静的のArrayList <ファイル> getAllFiles(文字列パス、文字ファイル名、文字列のサフィックス、int型のサイズ){ のArrayList <ファイル>のfileList = 新規のArrayList <ファイル> (); 以下のためにint型私は++; iが=サイズを<I = 1 ){ ファイルファイル = 新しいファイル(パス+ fileNameに+ "_" + I + ""サフィックス); もし(file.exists()){ fileList.add(ファイル)。 } } 戻り、Filelistを。 } パブリック 静的 ボイド mergeImagetogeter(文字列のパスのArrayList <たBufferedImage> picList、文字列のサフィックス){ 試みる{ たBufferedImage firstImage = picList.get(0 )。 INT W1 = firstImage.getWidth()。 int型の H1 = firstImage.getHeight()。 int型の幅= W1; int型の高さ= H1 *picList.size(); BufferedImageのNEWIMAGE = 新しいBufferedImageの(幅、高さ、firstImage.getType())。 グラフィックG = newImage.getGraphics()。 INT X = 0 int型、Y = 0 以下のためにint型 i = 0; iは++; iはpicList.size()< ){ たBufferedImage currentImage = picList.get(i)を、 Y =私は* H1を、 g.drawImage(currentImage、X、Y、W1、H1、NULL ); } ImageIO.write(NEWIMAGE、サフィックス新しいのFileOutputStream(パス)); g.dispose(); } キャッチ(例外e){ System.out.printlnは(e.getMessage())。 } } パブリック 静的BufferedImageのloadImageLocal(文字列imgName){ しようと{ 返す ImageIO.read(新しいファイル(imgNameを)); } キャッチ(例外e){ System.out.printlnは(e.getMessage())。 } 戻り ヌル } パブリック 静的 ボイド試験(){ ArrayListの<たBufferedImage> picList = 新規のArrayList <たBufferedImage> (); ArrayList <ファイル>のfileList = getAllFiles(DIR_PATH、PIC_NAMEサフィックス、52 )。 以下のためにint型 i = 0; iはfileList.size()<; I ++のを){ たBufferedImage currentPic = loadImageLocal(fileList.get(I).getAbsolutePath())。 picList.add(currentPic)。 } mergeImagetogeter(MERGED_PIC_PATH、picListサフィックス)。 // 将多张图片合在一起 のSystem.out.println( "成功しました!" ); } }

合併前:

 

レンダリング:

 

おすすめ

転載: www.cnblogs.com/JimmySeraph/p/11320446.html