导航:首页 > 文件处理 > java图片压缩jpg

java图片压缩jpg

发布时间:2025-08-01 13:57:21

Ⅰ 开源推荐:Android图片压缩开源库

推荐两个Github上的Android图片压缩库:Luban与Compressor。它们旨在解决图片上传时的压缩问题,适用于拍照上传、选择原图或压缩图上传的场景。

Luban,作者深入分析了当前图片压缩中存在的问题,如单纯裁切和压缩的控制不精确。他通过微信朋友圈发送的对比测试,推算出一套压缩算法。此库提供微信压缩效果的逆向处理功能,并在项目中详细说明算法实现。

Compressor,提供动辄几MB的图片压缩至几十KB的高保真效果。API调用支持普通方式和Rxjava,满足不同开发者需求。

这两者均在Github上受到关注,作者持续维护更新。使用者可直接应用或深入学习源码。如您有更优的Android图片压缩方案,欢迎留言分享。

Ⅱ 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图片压缩不失真的方法-java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

java是怎么实现等比例缩小图片而不失真的啊?

按照等比例的长宽进行缩放就可以了呀,就好像你打开一个图片,一般都有缩放功能,原理是一样的,等比例的缩放,关键像素还是存在的。

java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

也就是图片压缩,可以不修改任何大小的压缩(速度快),也可等比例修改大小压缩(较慢)

下面这是一段等比例缩小图片的方法。

publicStringcompressPic(StringinputDir,StringoutputDir,

StringinputFileName,StringoutputFileName,intwidth,

intheight,booleangp,Stringhzm){

try{

if(!()){

return"";

}

Imageimg=(image);

//判断图片格式是否正确

if((null)==-1){

return"no";

}else{

intnewWidth;intnewHeight;

//判断是否是等比缩放

if(gp==true){

//为等比缩放计算输出的图片宽度及高度

doublerate1=((double)(null))/(double)width;

doublerate2=((double)(null))/(double)height;

//根据缩放比率大的进行缩放控制

doublerate=rate1>rate2?rate1:rate2;

newWidth=(int)(((double)(null))/rate);

newHeight=(int)(((double)(null))/rate);

}else{

newWidth=(null);//输出的图片宽度

newHeight=(null);//输出的图片高度

}

BufferedImagetag=newBufferedImage((int)newWidth,(int)newHeight,_INT_RGB);

/*

*_SMOOTH的缩略算法生成缩略图片的平滑度的

*优先级比速度高生成的图片质量比较好但速度慢

*/

Imageim=(newWidth,newHeight,_SMOOTH);

().drawImage(im,0,0,null);

FileOutputStreamout=newFileOutputStream(outputDir+outputFileName);

//JPEGImageEncoder可适用于其他图片类型的转换

JPEGImageEncoderencoder=(out);

(tag);

();

}

}catch(IOExceptionex){

();

}

return"ok";

}

求助java压缩图片存储大小的方法

可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:

public_tatic_oolean_ompressPic(String_rcFilePath,_tring_escFilePath)_hrows_OException_

____File_ile=_ull;

____BufferedImage_rc=_ull;

____FileOutputStream_ut=_ull;

____ImageWriter_mgWrier;

____ImageWriteParam_mgWriteParams;

____//_付ㄐ赐计姆绞轿_jpg

____imgWrier=("jpg").next();

____imgWriteParams=_ew(

________null);

____//_褂醚顾,必须指定压缩方式为MODE_EXPLICIT

____(_EXPLICIT);

____//_饫镏付ㄑ顾酰某潭,参数qality是取值0~1范围内,

____((float)1);

____(_DISABLED);

____ColorModel_olorModel=(new_ile(srcFilePath)).getColorModel();//();

____//_付ㄑ顾跏笔褂玫纳誓J

//____(new(

//________colorModel,(16,16)));

____(new(

________colorModel,(16,16)));

____try_

______if(isBlank(srcFilePath))_

________return_alse;

______}_lse_

________file=_ew_ile(srcFilePath);(());

________src=(file);

________out=_ew_ileOutputStream(descFilePath);

________();

________//_匦胂戎付_out值,才能调用write方法,_mageOutputStream可以通过任何

________//_utputStream构造

________((out));

________//_饔_rite方法,就可以向输入流写图片

________(null,_ew_IOImage(src,_ull,_ull),

____________imgWriteParams);

________();

________();

______}

____}_atch(Exception_)_

______e.printStackTrace();

______return_alse;

____}

____return_rue;

__}

public_tatic_oolean_sBlank(String_tring)_

____if(string==_ull_|()==0_|().equals(""))_

______return_rue;

____}

____return_alse;

__}

Ⅳ 求一个Java无损压缩图片的示例,把原图片复制到指定目录,按原图比例改变尺寸,不影响图片质量。

图片压缩就是讲图片的内存变小 对象数坑定有印象 你将压缩率改小一点 调整一下压缩率 到自己满意为止

阅读全文

与java图片压缩jpg相关的资料

热点内容
vsstudio如何编写c语言程序并编译 浏览:391
服务器安装虚拟机怎么做 浏览:324
为什么苹果没有显示app 浏览:36
怎么样编译app 浏览:643
手机pdf文件怎么编辑 浏览:636
汽车换机油用什么app 浏览:295
包头养老保险在什么app缴费 浏览:850
程序员对语数英的要求 浏览:392
大蕃号app更新如何安装 浏览:352
为什么知乎网页版老是让我打开app 浏览:79
压缩袋团购 浏览:87
安徽省鸿申压缩机有限公司 浏览:840
有什么app可以远程操控手机 浏览:866
清史稿译pdf 浏览:955
你不知道程序员冷知识 浏览:216
海康威视摄像头你的视频已加密 浏览:98
程序员三年薪资 浏览:443
寻仙文字游戏源码 浏览:914
java编程方向 浏览:420
单行PDF 浏览:642