可以使用Draw這個類,通過改變像素來改變存儲大小,實例如下:
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計,劍川網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:劍川等地區(qū)。劍川做網(wǎng)站價格咨詢:18980820575
public?static?boolean?compressPic(String?srcFilePath,?String?descFilePath)?throws?IOException?{
File?file?=?null;
BufferedImage?src?=?null;
FileOutputStream?out?=?null;
ImageWriter?imgWrier;
ImageWriteParam?imgWriteParams;
//?指定寫圖片的方式為?jpg
imgWrier?=?ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams?=?new?javax.imageio.plugins.jpeg.JPEGImageWriteParam(
null);
//?要使用壓縮,必須指定壓縮方式為MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
//?這里指定壓縮的程度,參數(shù)qality是取值0~1范圍內(nèi),
imgWriteParams.setCompressionQuality((float)?1);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel?colorModel?=ImageIO.read(new?File(srcFilePath)).getColorModel();//?ColorModel.getRGBdefault();
//?指定壓縮時使用的色彩模式
//????????imgWriteParams.setDestinationType(new?javax.imageio.ImageTypeSpecifier(
//????????????????colorModel,?colorModel.createCompatibleSampleModel(16,?16)));
imgWriteParams.setDestinationType(new?javax.imageio.ImageTypeSpecifier(
colorModel,?colorModel.createCompatibleSampleModel(16,?16)));
try?{
if?(isBlank(srcFilePath))?{
return?false;
}?else?{
file?=?new?File(srcFilePath);System.out.println(file.length());
src?=?ImageIO.read(file);
out?=?new?FileOutputStream(descFilePath);
imgWrier.reset();
//?必須先指定?out值,才能調(diào)用write方法,?ImageOutputStream可以通過任何
//?OutputStream構(gòu)造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
//?調(diào)用write方法,就可以向輸入流寫圖片
imgWrier.write(null,?new?IIOImage(src,?null,?null),
imgWriteParams);
out.flush();
out.close();
}
}?catch?(Exception?e)?{
e.printStackTrace();
return?false;
}
return?true;
}
public?static?boolean?isBlank(String?string)?{
if?(string?==?null?||?string.length()?==?0?||?string.trim().equals(""))?{
return?true;
}
return?false;
}
java壓縮圖片,按照比例進行壓縮
public static void main(String[] args) {
try {
//圖片所在路徑
BufferedImage templateImage = ImageIO.read(new File("C:\\Users\\晏丁丁\\Pictures\\圖片1.png"));
//原始圖片的長度和寬度
int height = templateImage.getHeight();
int width = templateImage.getWidth();
//通過比例壓縮
float scale = 0.5f;
//通過固定長度壓縮
/*int doWithHeight = 100;
int dowithWidth = 300;*/
//壓縮之后的長度和寬度
int doWithHeight = (int) (scale * height);
int dowithWidth = (int) (scale * width);
BufferedImage finalImage = new BufferedImage(dowithWidth, doWithHeight, BufferedImage.TYPE_INT_RGB);
finalImage.getGraphics().drawImage(templateImage.getScaledInstance(dowithWidth, doWithHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
//圖片輸出路徑,以及圖片名
FileOutputStream fileOutputStream = new FileOutputStream("D:/image/tupian.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
encoder.encode(finalImage);
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
文章知
縮小即可。javathumbnails壓縮圖片占用內(nèi)存過大的解決辦法:
1、打開壓縮圖網(wǎng)站,點擊選擇圖片壓縮按鈕。
2、圖片上傳前網(wǎng)站默認(rèn)的壓縮等級是70,圖片上傳后會自動按照當(dāng)前設(shè)置的壓縮等級進行壓縮,如果壓縮后的大小不合要求,可再次設(shè)置圖片的寬高尺寸、壓縮等級等參數(shù),寬高留空時默認(rèn)按照原圖尺寸進行壓縮,壓縮等級越小則壓縮后的圖片體積越小,最后點擊開始壓縮按鈕重新壓縮。
3、圖片壓縮后,我們就能明顯的看到圖片壓縮后的體積縮小了很多,點擊“保存圖片”即可。
標(biāo)題名稱:java代碼壓縮圖片大小 java 壓縮圖片
本文網(wǎng)址:http://jinyejixie.com/article8/dosseip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、做網(wǎng)站、軟件開發(fā)、營銷型網(wǎng)站建設(shè)、小程序開發(fā)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)