com.zovon.util 패키지; 수입 java.awt.AlphaComposite; 수입 java.awt.Color의; 수입 java.awt.Font에; 수입 java.awt.Graphics; 수입 java.awt.Graphics2D; 수입 java.awt.Image의; 수입 java.awt.geom.AffineTransform; 수입 java.awt.image.AffineTransformOp; 수입 java.awt.image.BufferedImage; 수입 java.io.BufferedInputStream의; 수입 java.io.BufferedOutputStream에; 수입 java.io.File에; 수입 java.io.FileInputStream의; 수입 java.io.FileNotFoundException; 수입 java.io.FileOutputStream의; 수입 때 java.io.IOException; 수입 java.io.InputStream를; 수입 java.io.OutputStream에; 수입 인 java.util.ArrayList; 수입은 java.util.List; ; 오기 javax.imageio.ImageIO은 / ** *이 클래스는 화상 처리 클래스 * * @author 왕 YONGFENG HTTP : * 소스 //www.cnblogs.com/zovon /p/4345501.html * / 공용 클래스 ImageUtil 최종 { / ** 그림 형식 : JPG * / 민간 최종 정적 문자열 PICTRUE_FORMATE_JPG = "JPG"; 개인 ImageUtil () { } / ** * 결합 된 그림을 생성 * * @param 경로 사용자 이미지 * * IOException이 @throws * / 공공 정적 무효 getCombinationOfhead (목록 <문자열> 경로) IOException가 {던졌습니다 목록 <BufferedImage의> BufferedImage의 = 새로운 새로운 ArrayList를 <BufferedImage의> (); // 압축 모든 이미지 생성 화면 크기는 50 × 50 동의입니다 대 (INT I = 0; I <paths.size (); I ++) { bufferedImages.add (ImageUtil.resize2 (paths.get (I), (50), (50) ))에 해당하는 단계; } INT 폭 = 112 //이되는 드로잉 보드 폭과 높이 INT 높이 = 112 //이 드로잉 보드의 높이 // BufferedImage.TYPE_INT_RGB 뷰는 API 정의 할 않는 BufferedImage outImage BufferedImage와 새로운 새 = (폭, 높이 BufferedImage.TYPE_INT_RGB); // 캔버스 생성 = 그래픽 outImage.getGraphics G () Graphics2D 문맥 G2D = (Graphics2D 문맥) G; // 배경색 세트 g2d.setBackground (신규 새로운 컬러 (231,231,231)) 를 사용하여 // 현재 도면 배경 색상의 표면을 작성하여 지정된 사각형을 취소합니다. g2d.clearRect (0, 0, 폭, 높이); // 픽처 개시에 따른 조립 생성 된 패턴이 결정된다 화상의 조합의 수 (4) 현재 INT J = 1; 위한 (INT 난 = 1; I <= bufferedImages.size (); I ++) { 경우 (bufferedImages.size () == 4) { (I <= 2) {경우 g2d.drawImage (bufferedImages.get (I - 1 ) (50)는 I + 4 * I - 50, 4, NULL); 사용한다} else { g2d.drawImage (bufferedImages.get (I - 1) * 50 + 4 * J J - 50, 58, NULL); J ++; } } 다른 경우 (bufferedImages.size () == 3) { 경우 (ⅰ <= 1) { g2d.drawImage (bufferedImages.get (I - 1), 31 (4), NULL); } 다른 { g2d.drawImage (bufferedImages.get (I - 1) * 50 * J + J. 4. - 50, 58, NULL); J ++; } }는 다른 IF (bufferedImages.size () == 2) { g2d.drawImage (BufferedImage의 갔지. (I - 1), 50 * I가 + I * 4 - (50). (31)는, NULL); .}는 다른 IF (bufferedImages.size () == 1) { g2d.drawImage (. bufferedImages.get (I - 1) 31, 31이며, 널 (null))이다 } // 여기에 그린 컬러의 색상을 변경하는 것이 필요합니다. 클래스가하는 AlphaComposite 사용할 수 있습니다 } 문자열 outPath = "E : \\ b.jpg를"; 문자열 형식 = "JPG"; ImageIO.write (outImage, 형식, 새로운 새로운 파일 (outPath)); } / ** * 이미지 줌 * * @param적인 filePath * 이미지 경로 * @param 높이 * 높이 * @param 폭 * 폭 * @param BB * 비율이 패딩을 필요로하지 않는다 * / BufferedImage를 (문자열적인 filePath resize2 공용 static, INT 높이 , INT 폭, 부울 BB) { 은 try { 더블 비 = 0; // 확장 파일 F = 새로운 새로운 파일 (적인 filePath); BufferedImage를 ImageIO.read BI = (F) //이 비율을 계산 이미지 Itemp bi.getScaledInstance = (폭, 높이, Image.SCALE_SMOOTH); // copyimg (여기서 filePath "D : \\ IMG를"); 경우 ((bi.getHeight ()> 높이) || (bi.getWidth ()> 폭)) { 경우 (bi.getHeight ()> bi.getWidth ()) { 비율 = (새로운 정수 (높이)).있는 doubleValue () / bi.getHeight (); 사용한다} else { 비율 = (새로운 정수 (폭))있는 doubleValue () / bi.getWidth ().; } 는, AffineTransformOp 연산 새로운는, AffineTransformOp을 = ( AffineTransform.getScaleInstance (비 비), NULL); itemp = op.filter (BI, NULL); } 경우 (BB) { BufferedImage의 이미지 = 새로운 BufferedImage의 (폭, 높이, BufferedImage.TYPE_INT_RGB); Graphics2D의 g = image.createGraphics (); g.setColor (Color.white); g.fillRect (0, 0, 폭, 높이); (폭 == itemp.getWidth (NULL)) 경우 itemp.getHeight (NULL)) / 2 - g.drawImage (itemp 0 (높이 itemp.getWidth (NULL) itemp.getHeight (NULL) Color.white , 없는); 다른 g.drawImage (itemp (너비 - itemp.getWidth (NULL)) / 2, 0, itemp.getWidth (NULL) itemp.getHeight (NULL) Color.white, NULL); () g.dispose; itemp는 이미지 =; } 창 (BufferedImage의) itemp; } 캐치 (IOException이 전자) { e.printStackTrace (); } NULL을 반환; } }
전송 : HTTPS : //www.cnblogs.com/zovon/p/4345501.html