日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 上传图片 生成缩略图_上传图片同时生成缩略图

發布時間:2024/1/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 上传图片 生成缩略图_上传图片同时生成缩略图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

packagecn.conris.sys.utils;import java.io.*;import java.awt.*;import java.awt.image.*;importjava.awt.Graphics;importjava.awt.color.ColorSpace;importjavax.imageio.ImageIO;public classChangeImageSize {/** */

/*** 縮放圖像

*

*@paramsrcImageFile

* 源圖像文件地址

*@paramresult

* 縮放后的圖像地址

*@paramscale

* 縮放比例

*@paramflag

* 縮放選擇:true 放大; false 縮小;*/

public static void scale(String srcImageFile, String result, booleanflag) {try{

BufferedImage src= ImageIO.read(new File(srcImageFile)); //讀入文件

int width = src.getWidth(); //得到源圖寬

int height = src.getHeight(); //得到源圖長

double scale = 1;if (width >height) {

scale= height / 64;

}else{

scale= width / 64;

}if(flag) {//放大

width = (int) (width *scale);

height= (int) (height *scale);

}else{//縮小

width = (int) (width /scale);

height= (int) (height /scale);

}

Image image=src.getScaledInstance(width, height,

Image.SCALE_DEFAULT);

BufferedImage tag= newBufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

Graphics g=tag.getGraphics();

g.drawImage(image,0, 0, null); //繪制縮小后的圖

g.dispose();

ImageIO.write(tag,"JPEG", new File(result));//輸出到文件流

BufferedImage src2 = ImageIO.read(new File(result)); //讀入文件

int x = 0;int y = 0;if (src2.getWidth() >src2.getHeight()) {

x= (src2.getWidth() - 64) / 2; //得到源圖寬

y = 0; //得到源圖長

} else{

y= (src2.getHeight() - 64) / 2; //得到源圖寬

x = 0; //得到源圖長

}

convert(result, result);

OperateImage opimg= new OperateImage(result, result, x, y, 64, 64);

opimg.cut();

}catch(IOException e) {

e.printStackTrace();

}

}/** */

/*** 圖像切割

*

*@paramsrcImageFile

* 源圖像地址

*@paramdescDir

* 切片目標文件夾

*@paramdestWidth

* 目標切片寬度

*@paramdestHeight

* 目標切片高度*/

public static void cut(String srcImageFile, String descDir, intdestWidth,intdestHeight) {try{

Image img;

ImageFilter cropFilter;//讀取源圖像

BufferedImage bi = ImageIO.read(newFile(srcImageFile));int srcWidth = bi.getHeight(); //源圖寬度

int srcHeight = bi.getWidth(); //源圖高度

if (srcWidth > destWidth && srcHeight >destHeight) {

Image image=bi.getScaledInstance(srcWidth, srcHeight,

Image.SCALE_DEFAULT);

destWidth= 200; //切片寬度

destHeight = 150; //切片高度

int cols = 0; //切片橫向數量

int rows = 0; //切片縱向數量//計算切片的橫向和縱向數量

if (srcWidth % destWidth == 0) {

cols= srcWidth /destWidth;

}else{

cols= (int) Math.floor(srcWidth / destWidth) + 1;

}if (srcHeight % destHeight == 0) {

rows= srcHeight /destHeight;

}else{

rows= (int) Math.floor(srcHeight / destHeight) + 1;

}//循環建立切片//改進的想法:是否可用多線程加快切割速度

for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {//四個參數分別為圖像起點坐標和寬高//即: CropImageFilter(int x,int y,int width,int height)

cropFilter = new CropImageFilter(j * 200, i * 150,

destWidth, destHeight);

img=Toolkit.getDefaultToolkit().createImage(newFilteredImageSource(image.getSource(),

cropFilter));

BufferedImage tag= newBufferedImage(destWidth,

destHeight, BufferedImage.TYPE_INT_RGB);

Graphics g=tag.getGraphics();

g.drawImage(img,0, 0, null); //繪制縮小后的圖

g.dispose();//輸出為文件

ImageIO.write(tag, "JPEG", newFile(descDir+ "pre_map_" + i + "_" + j + ".jpg"));

}

}

}

}catch(Exception e) {

e.printStackTrace();

}

}/** */

/*** 圖像類型轉換 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)*/

public static voidconvert(String source, String result) {try{

File f= newFile(source);

f.canRead();

f.canWrite();

BufferedImage src=ImageIO.read(f);

ImageIO.write(src,"JPG", newFile(result));

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}/** */

/*** 彩色轉為黑白

*

*@paramsource

*@paramresult*/

public static voidgray(String source, String result) {try{

BufferedImage src= ImageIO.read(newFile(source));

ColorSpace cs=ColorSpace.getInstance(ColorSpace.CS_GRAY);

ColorConvertOp op= new ColorConvertOp(cs, null);

src= op.filter(src, null);

ImageIO.write(src,"JPEG", newFile(result));

}catch(IOException e) {

e.printStackTrace();

}

}/** */

/***@paramargs*/

public static voidmain(String[] args) {

scale("d://2.jpg", "d://3.jpg", false);

}

}

總結

以上是生活随笔為你收集整理的java 上传图片 生成缩略图_上传图片同时生成缩略图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。