导航:首页 > 文件处理 > java实现图片质量压缩

java实现图片质量压缩

发布时间:2025-06-01 18:49:34

① 如何实现将java项目中的图片集保存为zip文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;public class Zip {
// 压缩
public static void zip(String zipFileName, String inputFile)
throws Exception {
File f = new File(inputFile);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
zip(out, f, null);
System.out.println("zip done");
out.close();
} private static void zip(ZipOutputStream out, File f, String base)
throws Exception {
System.out.println("zipping " + f.getAbsolutePath());
if (f != null && f.isDirectory()) {
File[] fc = f.listFiles();
if (base != null)
out.putNextEntry(new ZipEntry(base + "/"));
base = base == null ? "" : base + "/";
for (int i = 0; i < fc.length; i++) {
zip(out, fc[i], base + fc[i].getName());
}
} else {
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
while ((b = in.read()) != -1)
out.write(b);
in.close();
}
} // 解压
public static void unzip(String zipFileName, String outputDirectory)
throws Exception {
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
ZipEntry z;
while ((z = in.getNextEntry()) != null) {
String name = z.getName();
if (z.isDirectory()) {
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
System.out.println("MD " + outputDirectory + File.separator
+ name);
} else {
System.out.println("unziping " + z.getName());
File f = new File(outputDirectory + File.separator + name);
f.createNewFile();
FileOutputStream out = new FileOutputStream(f);
int b;
while ((b = in.read()) != -1)
out.write(b);
out.close();
}
}
in.close();
} public void deleteFolder(File dir) {
File filelist[] = dir.listFiles();
int listlen = filelist.length;
for (int i = 0; i < listlen; i++) {
if (filelist[i].isDirectory()) {
deleteFolder(filelist[i]);
} else {
filelist[i].delete();
}
}
dir.delete();// 删除当前目录
} public static void main(String[] args) {
try {
// TestZip t = new TestZip();
// t.zip("c:\\test.zip","c:\\test");
// t.unzip("c:\\test.zip","c:\\test2");
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}

② java 可以压缩gif图片吗

不可以,目前只有用java转化jpg、png、jpeg格式的文件,gif内部是用帧实现的,不能被压缩。

③ js锲剧墖铡嬬缉鍒版寚瀹氩ぇ灏忎笉鍙-java濡备綍瀹炵幇鎶娄竴涓澶у浘鐗囧帇缂╁埌鎸囧畾澶у皬镄勫浘鐗囦笖闀垮芥瘆涓嶅彉锛

js铡嬬缉锲剧墖鍒板浐瀹氩儚绱犱互鍐咃纴500k涓轰緥

链鏂囨棬鍦ㄦ帰绌秊s铡嬬缉锲剧墖镄勪袱绉嶆柟寮:

鏀瑰彉锲剧墖闀垮

,

鏀瑰彉锲剧墖璐ㄩ噺

,鍜岀粨钖堜简浠ヤ笂涓よ呯殑

链缁堟柟妗

棣栧厛,阒呰绘湰鏂囬渶瑕佺煡阆揷anvas镄勪袱涓鏂规硶

杩欎袱涓鏂规硶鍏蜂綋镄勮存槑鍙浠ュ湪MDN涓婃煡鐪,鍏充簬锲剧墖铡嬬缉,涔熸湁寰埚氱幇鎴愮殑鍗氩㈠彲浠ョ洿鎺ョ敤銆备絾鏄闾d簺鍗氩㈤兘链変釜闂棰,骞舵病链夊叧蹇冧箣钖庡浘鐗囩殑铡嬬缉璐ㄩ噺銆

鎴戣瘯镌鐢ㄤ竴涓鐜版垚镄勪緥瀛愬幓璺戜简涓涓,涓涓1.7M镄勫浘鐗囧帇缂╁埌浜23k,鍫绉板儚绱犵骇姣佺伃镐х牬鍧忋

锅囧备竴寮犲ぇ锲惧彲鑳藉寘钖镌寰埚氭枃瀛楃瓑鍏抽敭淇℃伅,蹇呴’涓娄紶涔嫔悗浣跨敤鏂硅兘娓呮榈杈ㄨゃ傛墍浠ヨ佸帇缂╀箣钖庤川閲忓敖鍙鑳芥帴杩500k镄勚500k镀忕礌浠ュ唴,灏辨槸鑻ヤ竴寮犲浘瀹藉害涓1024,鍒欓珮搴︿笉鑳借秴杩500銆傚洜涓哄浘鐗囨湁鍏朵粬镄勪俊鎭,涔熸槸瑕佸崰澶у皬镄勚傚嵆涓嶅缑澶т簬

1024*500

镓浠,镙规嵁闇姹,涓娄紶锲剧墖涓嶈兘瓒呰繃500k镄勬儏鍐典笅灏藉彲鑳戒缭鐣椤浘鐗囩殑娓呮榈搴︺傚綋铹跺傛灉鍙浠ョ殑𨱍呭喌涓嬬敤涓婇溃鎻愬埌镄勮剧疆铡嬬缉绋嫔害涓0.9,0.8璇曡瘯鐪,锲剧墖璐ㄩ噺鍙浠ユ帴鍙,澶у皬浼氭湁澶у箙搴︾殑缂╁皬銆

濡傛灉涓嶅帇缂,闱犺皟鏁村浘鐗囬暱瀹藉幓鎺у埗涓娄紶澶у皬锻?

铡熺悊寰堢亩鍗,灏辨槸闱犱笉鏂鍦扮缉灏忛檺瀹氱殑链澶у介珮,鐩村埌链缁堥暱瀹界殑绉灏忎簬瑙勫畾镄勫ぇ灏忋

杩欑嶆柟娉曟湁鍙鑳芥渶钖庡缑鍑虹殑锲剧墖镄勫ぇ灏忎细鐣ュぇ浜庤勫畾澶у皬,铡熷洜涓婃枃涔熸彁鍒拌繃浜,濡傛灉𨱍充娇鐢ㄨ繖绉嶆柟娉,鍙镊琛屽啀璋冩暣涓涓嬨

涓婇溃镄勬柟娉曟湁涓闂棰,灏辨槸鏀瑰彉浜嗗浘鐗囩殑铡熷嬮暱瀹姐傚傛灉涓涓锲剧殑闀垮借冻澶熷ぇ,铡嬬缉锲剧墖璐ㄩ噺,绯娄竴镣逛絾鏄鍐呭圭湅寰楁竻涔熸槸ok镄勫槢銆傛墍浠,璺熶笂闱㈠悓鐞,鎴戜滑鍙浠ヤ笉鏂璋冩暣锲剧墖镄勮川閲忚惧畾鐩村埌澶у皬钖堥,闾d箞,濡备綍鍦ㄥ浘鐗囦笂浼犱箣鍓岖煡阆揿浘鐗囩殑澶у皬锻?

棣栧厛,闇瑕佺煡阆撶殑涓镣规槸,铡嬬缉涔嫔悗𨰾垮埌镄刡ase64瀛楃︿覆浼氲浆鎴恇lob瀵硅薄,铹跺悗浼犵粰链嶅姟绔銆

鍙浠ユ煡阒呮枃妗,blob瀵硅薄链変釜灞炴ф槸size

杩欎釜size灏辨槸涓娄紶涔嫔悗瀹为檯镄勬枃浠跺ぇ灏忋

鍙傜収涓婇溃镄勬濊矾,鍙浠ユ疮娆℃敼鍙('image/'+fileType,level);level镄勫,铡昏皟鏁村帇缂╁浘鐗囱川閲,铹跺悗鐢╞lob瀵硅薄镄剆ize铡婚獙璇佹槸钖︽弧瓒500k浠ュ唴镄勯渶姹伞

鍏充簬镄刲evel鍒板簳鏄镐庝箞璁$畻镄,MDN鏂囨。閲屼篃娌¤,鍐欎简涓寰鐜涓娆″噺灏0.1镄刲evel铡嬬缉浜嗗嚑涓锲剧墖

鐢ㄥ姞鍑忎箻闄ょ畻浜嗕竴涓,娌℃垒鍒拌勫緥,鏁板︿笉濂芥斁寮冧简(杩欎釜涓滆タ濂藉儚涔熶笉鏄鑳借傚疗鍑烘潵镄,鐪嬬粨鏋滆窡鍒濆嫔ぇ灏忔病鍟ュ叧绯)銆

杩欓噷瑕佹敞镒忕殑鏄,链夊彲鑳介亣鍒拌秴澶у浘鐗,0.1镄刲evel鍙鑳戒笉瓒充互铡嬬缉鍒500k,镓浠ュ皬浜0.1镄勬椂鍊,鏀瑰彉level阃掑噺镄勫樊鍊肩户缁铡嬬缉涓嫔幓

鍦ㄥ紑濮嬫帴鏀跺埌锲剧墖镄勬椂鍊欑粰涓涓猯oading澧炲姞鐢ㄦ埛镄勮愬绩濂戒简,loading涓囧瞾~

鍏跺疄鍗旷函镄勫帇缂╄川閲忛亣鍒扮◢澶х殑锲剧墖,浼氩艰嚧椤甸溃楂橀戣$畻,铹跺悗椤甸溃锘烘湰灏辩敤涓崭简浜--銆傛湁灏濊瘯杩囩敤iphone镄勪竴涓灞忓箷鎴锲(10M宸﹀彸),铡嬬殑镞跺欑◢杩囦竴浼,鏁翠釜镓嬫満閮藉湪鍙戠俪,鍙鑳芥潃杩涚▼銆

镓浠,鑻ュ归暱搴︽病链夌壒娈婄殑闄愬埗,鍙浠ュ仛涓涓缂╂斁,铡诲姞蹇铡嬬缉镄勮繘搴,鎻愰珮鑳藉帇缂╃殑锲剧墖澶у皬涓婇檺銆

椤甸溃鍒颁简ios涓婅缮鏄涓嶈--,鍙浠ョ湅鍒版渶钖庡浘鐗噇evel涓0.001,链闀胯竟涓764銆

闂棰樿缮鏄寰鐜娆℃暟杩樻槸杩囧,璁$畻棰戠巼澶楂樸备粠锲句腑鍙鐪嫔嚭,瀵逛簬澶у浘𨱒ヨ,鍒濆嬭惧畾镄刲evel鍜屽浘鐗囧昂瀵歌繃浜庡芥涧,鍙浠ヤ紭鍖栦竴涓嫔埯濮媗evel鍜屽昂瀵搞

链夌殑镞跺栾缮浼氶亣鍒颁竴寮犲浘鐗囨棤璁哄备綍涔熷帇涓嶅埌500k,灏辨槸涓娄竴娆″拰杩欐$殑铡嬬缉钖庡ぇ灏忔病链夊彉鍖,杩欑嶆儏鍐甸渶瑕佹姏阌,涓嶈╁惊鐜缁х画銆

澶у浘鐗囩殑绛夊緟镞堕棿绋嶉暱,鍙浠ョ粰鐢ㄦ埛鍏堥勮堜竴涓狰ase64镄勫浘鐗囧炲姞绛夊緟钥愬绩,鏂规硶钖崭负getImgBase64,杩欓噷閮戒竴骞剁粰鍑轰简

瑙e喅镄勯殣鎭:涓婇溃杩欎釜鏂规堜细鍑虹幇鎴戦渶瑕佷竴涓500k镄勭収鐗,铡嫔埌浜520k涔嫔悗,鍐嶅帇浜嗕竴娆°傛湁镞跺栾繖链钖庣殑涓娆′细鐗瑰埆澶稿紶,鐩存帴灏嗗浘鐗囧纰鍒颁简鍑犲崄k銆

鍙傝冧简:

杩欎釜搴挞噷闱㈡湁涓鏂规硶compressAccurately,杩欎釜鏂规硶鍙浠ユ瘆杈幂簿鍑嗗湴铡嬬缉銆傚伔锅风炕浜嗕竴涓嬫簮镰併

鍏跺疄涓娄竴涓鏂规堢殑䦅涚偣灏卞湪浜,濡备綍鍦ㄦ疮涓涓铡嬬缉寰鐜閲屽勭悊灏哄稿拰铡嬬缉姣斾緥銆

镐荤粨

濡傛湁绾版纺,娆㈣繋鎸囨

java濡备綍瀹炵幇鎶娄竴涓澶у浘鐗囧帇缂╁埌鎸囧畾澶у皬镄勫浘鐗囦笖闀垮芥瘆涓嶅彉锛

java瑕佸疄鐜版妸涓涓澶у浘鐗囧帇缂╁埌鎸囧畾澶у皬镄勫浘鐗囦笖闀垮芥瘆涓嶅彉鍙浠ュ皾璇曚互涓嬫搷浣:

寤虹珛涓涓狝ffineTransform

AffineTransform(doublem00,doublem10,doublem01,doublem11,doublem02,doublem12)

杞鎹㈢烦阒,缂╂斁姣旇缉绠鍗(鐭╅樀鍙浠ュ共寰埚氢簨𨱍,𨱍冲仛锲惧儚澶勭悊杞浠跺彲浠ョ爷绌朵笅)

[x'][m00m01m02][x][m00x+m01y+m02]

[y']=[m10m11m12][y]=[m10x+m11y+m12]

[1][001][1][1]

10鍊嶆瘆杈冮毦绠(镙瑰彿10鍟,褰撶劧浣犳兂绠椾篃琛),9鍊嶅ソ镣(9镄勫紑鏂规槸3),m00涓1/3,m01涓0,m02涓0,m10涓0,m11涓1/3,m12涓0銆

鍐嶅缓涓涓狝ffineTransformOp,鎶娄笂闱㈢殑杞鎹浼犺繘铡

AffineTransformOp(AffineTransformxform,intinterpolationType)

链钖庤皟鐢ˋffineTransformOp镄凚ufferedImagefilter(BufferedImagesrc,BufferedImagedst),src浼犲师锲剧墖,杩斿洖鍊煎氨鏄𨱍宠佺殑Image,娉ㄦ剰鏄杩斿洖鍊,涓嶆槸dst,涓嶆槑锏藉彲浠ョ湅涓婮avaAPI

java濡备綍瀹炵幇鎶娄竴涓澶у浘鐗囧帇缂╁埌鎸囧畾澶у皬镄勫浘鐗囦笖闀垮芥瘆涓嶅彉锛

java瑕佸疄鐜版妸涓涓澶у浘鐗囧帇缂╁埌鎸囧畾澶у皬镄勫浘鐗囦笖闀垮芥瘆涓嶅彉鍙浠ュ皾璇曚互涓嬫搷浣:

寤虹珛涓涓狝ffineTransform

AffineTransform(doublem00,doublem10,doublem01,doublem11,doublem02,doublem12)

杞鎹㈢烦阒,缂╂斁姣旇缉绠鍗(鐭╅樀鍙浠ュ共寰埚氢簨𨱍,𨱍冲仛锲惧儚澶勭悊杞浠跺彲浠ョ爷绌朵笅)

[x'][m00m01m02][x][m00x+m01y+m02]

[y']=[m10m11m12][y]=[m10x+m11y+m12]

[1][001][1][1]

10鍊嶆瘆杈冮毦绠(镙瑰彿10鍟,褰撶劧浣犳兂绠椾篃琛),9鍊嶅ソ镣(9镄勫紑鏂规槸3),m00涓1/3,m01涓0,m02涓0,m10涓0,m11涓1/3,m12涓0銆

鍐嶅缓涓涓狝ffineTransformOp,鎶娄笂闱㈢殑杞鎹浼犺繘铡

AffineTransformOp(AffineTransformxform,intinterpolationType)

链钖庤皟鐢ˋffineTransformOp镄凚ufferedImagefilter(BufferedImagesrc,BufferedImagedst),src浼犲师锲剧墖,杩斿洖鍊煎氨鏄𨱍宠佺殑Image,娉ㄦ剰鏄杩斿洖鍊,涓嶆槸dst,涓嶆槑锏藉彲浠ョ湅涓婮avaAPI

④ Java压缩图片ImageIO.read()报错

BufferedImage sourceImg =ImageIO.read(new FileInputStream(new File(toPath)));

或者

BufferedImage sourceImg =ImageIO.read(new File(toPath));

阅读全文

与java实现图片质量压缩相关的资料

热点内容
bim中删除命令快捷方式 浏览:980
php生成一个文件 浏览:420
c运行php 浏览:71
为什么我的世界搜索不到服务器 浏览:99
帮忙拍牌照是什么APP 浏览:934
php网站技术架构图学习 浏览:149
cadpdf不清楚 浏览:332
java注解作用 浏览:39
aixls命令参数 浏览:849
curl命令参数 浏览:796
系统文件修复命令 浏览:946
App店是什么 浏览:462
主力至尊源码是什么 浏览:861
macbook如何去除磁盘加密 浏览:167
qq音乐服务器在什么位置 浏览:296
数控加工工艺与编程综合设计 浏览:229
反编译安装系统引导 浏览:646
ssh运行命令行 浏览:587
e3服务器什么档次 浏览:76
gccpdf 浏览:884