この記事は、インターネット上のいくつかの情報と組み合わせて著者によってカプセル化されたJava画像処理クラスで、画像のスケーリング、回転、モザイシングをサポートしています。
これ以上苦労せずに、コード:
パッケージ取引; java.awt.colorのインポート;インポートjava.awt.graphics;インポートjava.awt.graphics2d;インポートjava.awt.image;インポートjava.awt.geom.affinetransform; Import java.awt.image.affinetransformop; Import java.awt.image.image.image.image.image.image.image.image.image.image.image.image. javax.imageio.imageio;/***画像処理クラス。 * * @author nagsh * */public class imagedeal {string openurl; //元の画像開くパス文字列savurl; //新しい画像Save Path String Savename; //新しい画像名文字列接尾辞。 //新しい画像タイプは、GIF、JPG、PNG Public ImageTeal(String Openurl、String Savurl、String Savename、String suffix)のみをサポートしています{this.openurl = openurl; this.savename = savename; this.saveurl = saveurl; this.suffix = suffix; } /***画像スケーリング。 * * @param width * recose width * @param height * execl height * @Throws例外 */ public void Zoom(int width、int height)スロー例外{double sx = 0.0; double sy = 0.0; file file = new file(openurl); if(!file.isfile()){throw new Exception( "imagedeal >>>" + file + "Image file!"); } bufferedImage bi = imageio.read(file); //画像を読む// x軸y軸スケーリング比を計算する等しいスケールスケーリングが必要です。 sy =(double)height / bi.getheight(); affintransformop op = new affinetransformop(affintransform.getscaleinstance(sx、sy)、null);ファイルsf = new file(saveurl、savename + "。" + suffix); Image Zoomimage = op.Filter(bi、null); try {imageio.write((bufferedimage)zoomimage、suffix、sf); //画像を保存} catch(例外e){e.printstacktrace(); }} / ** *回転 * * @param degree *回転角 * @Throws例外 * / public voidスピン(int度)スロー例外{int swidth = 0; //回転後の幅int sheight = 0; //回転後の高さx x; // Origin Horizontal Coordinate Int Y; // Origin Vertical Coordinate File = new File(openurl); if(!file.isfile()){throw new Exception( "imagedeal >>>" + file + "Image file!"); } bufferedImage bi = imageio.read(file); //画像を読む//プロセス角度determine回転度=度360; if(degree <0)degree = 360 + gegre; //角度を0-360度に変換しますdouble steta = math.toradians(degree); //角度をラジアンに変換しますsheight = bi.getheight(); } else if(degree == 90 || degree == 270){sheight = bi.getWidth(); swidth = bi.getheight(); } else {swidth =(int)(math.sqrt(bi.getWidth() * bi.getWidth() + bi.getheight() * bi.getheigh()); sheight =(int)(math.sqrt(bi.getWidth() * bi.getWidth() + bi.getheigh())); } 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); //回転した画像の背景を特定の色で描画しますaffintransform at = new affintransform(); at.rotate(theta、swidth / 2、sheight / 2); //画像を回転させる(x、y); affinetransformop op = new affinetransformop(at、affintransformop.type_bicubic); Spinimage = op.filter(bi、spinimage);ファイルsf = new file(saveurl、savename + "。" + suffix); Imageio.Write(Spinimage、Suffix、SF); //画像を保存} /***モザイク化。 * @paramサイズのモザイクサイズ、つまり各長方形の長さと幅 * @return * @throws例外 */ public boolean mosaic(int size)スロー例外{file file = new file(openurl); if(!file.isfile()){throw new Exception( "imagedeal >>>" + file + "Image file!"); } bufferedImage bi = imageio.read(file); //画像BufferedImage Spinimage = new BuffereDimage(bi.getWidth()、bi.getheight()、bi.type_int_rgb); if(bi.getWidth()<size || bi.getheight()<size || size <= 0){//モザイクグリッドのサイズが大きすぎるか、小さすぎるとfalse。 } int xcount = 0; //方向の数は、int ycount = 0; //方向の数はycountで描画されます(bi.getWidth()%size == 0){xcount = bi.getWidth() / size; } else {xcount = bi.getWidth() / size + 1; } if(bi.getheight()%size == 0){ycount = bi.getheigh() / size; } else {ycount = bi.getheight() / size + 1; } int x = 0; // int y = 0を調整します。 //モザイク(長方形と塗りつぶしの色を描く)グラフィックス= spinimage.getGraphics(); for(int i = 0; i <xcount; i ++){for(int j = 0; j <ycount; j ++){// mosaic rectangle size int mwidth = size; int mheight = size; if(i == xcount-1){//水平方向の最後のものは特別であり、1つのサイズmwidth = bi.getWidth() - x; } if(j == ycount-1){//同様にmheight = bi.getheigh() - 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(color); gs.fillrect(x、y、mwidth、mheight); y = y + size; //次の長方形のy座標を計算} y = 0; // y座標を復元x = x + size; // x座標を計算} gs.dispose();ファイルsf = new file(saveurl、savename + "。" + suffix); Imageio.Write(Spinimage、Suffix、SF); //画像を保存してくださいtrue; } public static void main(string [] args)throws exception {imagedeal imagedeal = new imagedeal( "e://1.jpg"、 "e://"、 "2"、 "jpg"); //スケーリングをテスト/* Imagedeal.zoom(200、300); */ // test Rotation/* imagedeal.spin(90); */ // TEST MOSAIC/*IMAGEDEAL.MOSAIC(4);*/}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。