이 기사는 인터넷의 일부 정보와 함께 저자가 캡슐화 한 Java 이미지 처리 클래스입니다.
더 이상 고민하지 않고 코드 :
패키지 거래; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image; import java.awt.geom.affinetransform; import java.awt.image.affinetransformop; import java.awt.image.bufferedimage; javax.imageio.imageio;/*** 이미지 처리 클래스. * * @author nagsh * */public class imageal {String OpenUrl; // 원본 이미지 열린 경로 문자열 saveUrl; // 새로운 이미지 저장 경로 스트링 savename; // 새 이미지 이름 문자열 접미사; // 새 이미지 유형은 GIF, JPG, PNG Public ImageDEAL을 지원합니다 (String OpenUrl, String SaveUrl, String Savename, String Subix) {this.openurl = OpenUrl; this.savename = savename; this.saveurl = saveurl; this.suffix = 접미사; } /*** 이미지 스케일링. * * @param 너비 * 필수 너비 * @param 높이 * 필수 높이 * @throws 예외 */ public void Zoom (int 너비, int 높이)은 예외 {double sx = 0.0; 이중 Sy = 0.0; 파일 = 새 파일 (OpenUrl); if (! file.isfile ()) {새 예외를 던지십시오 ( "Imagedeal >>>" + file + "이미지 파일이 아님"); } bufferedImage bi = imageio.Read (파일); // 이미지 읽기 // x 축 계산 y 축 스케일링 비율 -If 동일 스케일링이 필요하다면, 매개 변수 너비와 높이가 호출하기 전에 동일하게 변경되는지 확인하십시오. sy = (이중) 높이 / bi.getheight (); affinetransformop op = New Affinetransformop (affinetransform.getScaleinstance (sx, sy), null); 파일 sf = 새 파일 (saveurl, savename + "." + 접미사); 이미지 Zoomimage = op.filter (bi, null); try {imageio.write ((bufferedImage) Zoomimage, Sfix, SF); // 이미지 저장} catch (예외 e) {e.printstacktrace (); }} / ** * 회전 * * @param 학위 * 회전 각도 * @throws 예외 * / public void spin (int degree)은 예외 {int swidth = 0; // 회전 후 너비 int sheight = 0; // 회전 후 높이 INT X; // 원산지 수평 좌표 int y; // 원산지 수직 좌표 파일 = 새 파일 (OpenUrl); if (! file.isfile ()) {새 예외를 던지십시오 ( "Imagedeal >>>" + file + "이미지 파일이 아님"); } bufferedImage bi = imageio.Read (파일); // 이미지를 읽습니다. // 프로세스 각도 검색 회전 학위 = 학위 % 360; if (decc hight = bi.getheight (); } else if (학위 == 90 || 학위 == 270) {sheight = bi.getWidth (); swidth = bi.getheight (); } else {swidth = (int) (math.sqrt (bi.getWidth () * bi.getWidth () + bi.getheight () * bi.getheight ())); hight = (int) (math.sqrt (bi.getWidth () * bi.getWidth () + bi.getheight ()); } x = (swidth / 2) - (bi.getWidth () / 2); // 원점 좌표 y = (Shight / 2) - (bi.getheight () / 2); BufferedImage spinimage = new bufferedImage (swidth, sheight, bi.getType ()); // 이미지의 배경색 설정 Graphics2d gs = (Graphics2d) spinimage.getGraphics (); Gs.SetColor (Color.white); gs.FillRect (0, 0, Swidth, Sheight); // 회전 된 이미지의 배경을 주어진 색상 Affinetransform at = new Affinetransform (); at.rotate (theta, swidth / 2, sheight / 2); // 이미지 회전 at.translate (x, y); Affinetransformop op = 새로운 affinetransformop (at, affinetransformop.type_bicubic); spinimage = op.filter (bi, spinimage); 파일 sf = 새 파일 (saveurl, savename + "." + 접미사); imageio.write (Spinimage, 접미사, SF); // 이미지를 저장} /*** 모자이크. * @param 크기 모자이크 크기, 즉 각 사각형의 길이와 너비 * @return * @throws 예외 */ public boolean mosaic (int size) 예외 {file file = new File (OpenUrl); if (! file.isfile ()) {새 예외를 던지십시오 ( "Imagedeal >>>" + file + "이미지 파일이 아님"); } bufferedImage bi = imageio.Read (파일); // 이미지 읽기 bufferedImage spinimage = new bufferedImage (bi.getWidth (), bi.getheight (), bi.type_int_rgb); if (bi.getWidth () <size || bi.getheight () <size || size <= 0) {// 모자이크 그리드의 크기는 너무 크거나 너무 작습니다. } int xcount = 0; // 방향 수는 int ycount = 0으로 그려집니다. // 방향 수는 ycount if (bi.getWidth () % size == 0) {xcount = bi.getWidth () / size; } else {xcount = bi.getWidth () / size + 1; } if (bi.getheight () % size == 0) {ycount = bi.getheight () / size; } else {ycount = bi.getheight () / size + 1; } int x = 0; // int y = 0을 조정합니다. // 모자이크 그리기 (사각형 및 채우기 색상을 그리기) 그래픽 gs = spinimage.getGraphics (); for (int i = 0; i <xcount; i ++) {for (int j = 0; j <ycount; j ++) {// mosaic 사각형 크기 int mwidth = size; int mheight = size; if (i == xcount-1) {// 수평 방향의 마지막 것은 특별하며 하나의 크기에 충분하지 않을 수 있습니다. mwidth = bi.getWidth ()-x; } if (j == ycount-1) {// 유사하게 mheight = bi.getheight () -y; } // 사각형 색상의 RGB 값은 중앙 픽셀 int centerx = x를 가져옵니다. int centery = y; if (mwidth % 2 == 0) {centerx += mwidth / 2; } else {centerx += (mwidth -1) / 2; } if (mheight % 2 == 0) {Centery += mheight / 2; } else {Centery += (mheight -1) / 2; } color color = new color (bi.getRGB (centerx, centery)); gs.setColor (색); gs.FillRect (X, y, mwidth, mheight); y = y + size; // 다음 사각형의 y 좌표를 계산} y = 0; // y 좌표를 복원 x = x + size; // x 좌표를 계산} gs.dispose (); 파일 sf = 새 파일 (saveurl, savename + "." + 접미사); imageio.write (Spinimage, 접미사, SF); // 이미지를 저장합니다. } public static void main (string [] args)은 예외를 던졌습니다. // 테스트 스케일링/* imageal.zoom (200, 300); */ // 테스트 회전/* imageal.spin (90); */ // Test Mosaic/*imageal.mosaic (4);*/}} 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.