成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

java實例解析之1M圖片壓縮優化到100kb

本篇文章給大家帶來了關于java的相關知識,主要為大家介紹了java實現1M圖片壓縮優化到100kb示例詳解,圖像壓縮是數據壓縮技術在數字圖像上的應用,有需要的朋友可以借鑒參考下,希望能夠有所幫助。

java實例解析之1M圖片壓縮優化到100kb

推薦學習:《java視頻教程》

一、圖像壓縮

圖像壓縮是數據壓縮技術在數字圖像上的應用,目的是減少圖像數據中的冗余信息,從而用更加高效的格式存儲和傳輸數據。

圖像壓縮可以是有損數據壓縮,也可以是無損數據壓縮。

java實例解析之1M圖片壓縮優化到100kb

java實例解析之1M圖片壓縮優化到100kb

怎么樣?

是不是感覺圖像壓縮技術沒有想象中那么簡單了?

二、Java數字圖像處理

作為這次“20 多萬外包項目”的“主力開發人員”,我這里就給大家介紹下 Java 數字圖像處理技術吧,一開始我就是用它來處理圖片的。

數字圖像處理(Digital Image Processing)是通過計算機對圖像進行去除噪聲、增強、復原、分割、提取特征等處理的方法和技術。

java實例解析之1M圖片壓縮優化到100kb

輸入的是圖像信號,然后經過 DIP 進行有效的算法處理后,輸出為數字信號。

為了壓縮圖像,我們需要讀取圖像并將其轉換成 BufferedImage 對象,BufferedImage 是 Image 類的一個子類,描述了一個具有可訪問的圖像數據緩沖區,由 ColorModel 和 Raster 的圖像數據組成。

java實例解析之1M圖片壓縮優化到100kb

廢話我就不多說了,直接進入實戰吧!

三、圖像壓縮實戰

剛好我本地有一張之前用過的封面圖,離 1M 只差 236 KB,可以拿來作為測試用。

java實例解析之1M圖片壓縮優化到100kb

這其中要用到 ImageIO 類,這是一個靜態類,提供了一系列方法用來讀和寫圖像,同時還可以對圖像進行簡單的編碼和解碼。

比如說通過 ImageIO.read() 可以將圖像讀取到 BufferedImage 對象:

File input = new File("ceshi.jpg"); BufferedImage image = ImageIO.read(input);

比如說通過 ImageIO.getImageWritersByFormatName() 可以返回一個Iterator,其中包含了通過命名格式對圖像進行編碼的 ImageWriter。

Iterator<ImageWriter> writers =  ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = (ImageWriter) writers.next();

比如說通過 ImageIO.createImageOutputStream() 可以創建一個圖像的輸出流對象,有了該對象后就可以通過 ImageWriter.setOutput() 將其設置為輸出流。

File compressedImageFile = new File("bbcompress.jpg"); OutputStream os =new FileOutputStream(compressedImageFile); ImageOutputStream ios = ImageIO.createImageOutputStream(os); writer.setOutput(ios);

緊接著,可以對 ImageWriter 進行一些參數配置,比如說壓縮模式,壓縮質量等等。

ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(0.01f);

壓縮模式一共有四種,MODE_EXPLICIT 是其中一種,表示 ImageWriter 可以根據后續的 set 的附加信息進行平鋪和壓縮,比如說接下來的 setCompressionQuality() 方法。

setCompressionQuality() 方法的參數是一個 0-1 之間的數,0.0 表示盡最大程度壓縮,1.0 表示保證圖像質量很重要。對于有損壓縮方案,壓縮質量應該控制文件大小和圖像質量之間的權衡(例如,通過在寫入 JPEG 圖像時選擇量化表)。 對于無損方案,壓縮質量可用于控制文件大小和執行壓縮所需的時間之間的權衡(例如,通過優化行過濾器并在寫入 PNG 圖像時設置 ZLIB 壓縮級別)。

整體代碼如下所示:

public class Demo {     public static void main(String[] args) {         try {             File input = new File("ceshi.jpg");             BufferedImage image = ImageIO.read(input);             Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");             ImageWriter writer = (ImageWriter) writers.next();             File compressedImageFile = new File("bbcompress.jpg");             OutputStream os = new FileOutputStream(compressedImageFile);             ImageOutputStream ios = ImageIO.createImageOutputStream(os);             writer.setOutput(ios);             ImageWriteParam param = writer.getDefaultWriteParam();             param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);             param.setCompressionQuality(0.01f);             writer.write(null, new IIOImage(image, null, null), param);             os.close();             ios.close();             writer.dispose();         } catch (IOException e) {             e.printStackTrace();         }     } }

執行壓縮后,可以看到圖片的大小壓縮到了 19 KB:

java實例解析之1M圖片壓縮優化到100kb

可以看得出,質量因子為 0.01f 的時候圖片已經有些失真了,可以適當提高質量因子比如說 0.5f,再來看一下。

java實例解析之1M圖片壓縮優化到100kb

圖片質量明顯提高了,但大小依然只有 64 KB,壓縮效果還是值得信賴的。

四、其他開源庫

接下來,推薦一些可以輕松集成到項目中的圖像處理庫吧,它們全都是免費的。

1)ImageJ,用 Java 編寫的,可以編輯、分析、處理、保存和打印圖像。

java實例解析之1M圖片壓縮優化到100kb

2)Apache Commons Imaging,一個讀取和寫入各種圖像格式的庫,包括快速解析圖像信息(如大小,顏色,空間,ICC配置文件等)和元數據。

java實例解析之1M圖片壓縮優化到100kb

3)ImageMagick,可以讀取和寫入超過100種格式的圖像,包括DPX、EXR、GIF、JPEG、JPEG-2000、PDF、PNG、Postscript、SVG和TIFF。還可以調整大小、翻轉、鏡像、旋轉、扭曲、剪切和變換圖像,調整圖像顏色,應用各種特殊效果,包括繪制文本、線條、多邊形、橢圓和貝塞爾曲線。

java實例解析之1M圖片壓縮優化到100kb

4)OpenCV,由BSD許可證發布,可以免費學習和商業使用,提供了包括 C/C++、Python 和 Java 等主流編程語言在內的接口。OpenCV 專為計算效率而設計,強調實時應用,可以充分發揮多核處理器的優勢。

java實例解析之1M圖片壓縮優化到100kb

這里就以 OpenCV 為例,來演示一下圖像壓縮。當然了,OpenCV 用來壓縮圖像屬于典型的大材小用。

第一步,添加 OpenCV 依賴到我們的項目當中,以 Maven 為例。

<dependency> 	<groupId>org.openpnp</groupId> 	<artifactId>opencv</artifactId> 	<version>4.5.1-2</version> </dependency>

第二步,要想使用 OpenCV,需要先初始化。

OpenCV.loadShared();

第三步,使用 OpenCV 讀取圖片。

Mat src = Imgcodecs.imread(imagePath);

第四步,使用 OpenCV 壓縮圖片。

MatOfInt dstImage = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY, 1); Imgcodecs.imwrite("resized_image.jpg", sourceImage, dstImage);

MatOfInt 的構造參數是一個可變參數,第一個參數 IMWRITE_JPEG_QUALITY 表示對圖片的質量進行改變,第二個是質量因子,1-100,值越大表示質量越高。

執行代碼后得到的圖片如下所示:

java實例解析之1M圖片壓縮優化到100kb

借這個機會,來對比下 OpenCV 和 JDK 原生 API 在壓縮圖像時所使用的時間。

這是我本機的配置情況,早年買的頂配 iMac,也是我的主力機。一開始只有 16 G 內存,后來加了一個 16 G 內存條,不過最近半年電腦突然死機重啟的頻率明顯提高了,不知道是不是 Big Sur 這個操作系統的問題還是電腦硬件老了。

java實例解析之1M圖片壓縮優化到100kb

結果如下所示:

opencvCompress壓縮完成,所花時間:1070
jdkCompress壓縮完成,所花時間:322

壓縮后的圖片大小差不多,都是 19 KB,并且質量因子都是最低值。

java實例解析之1M圖片壓縮優化到100kb

推薦學習:《java視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲国产AV玩弄放荡人妇系列| 亚洲蜜桃无码视頻精品网| 亚洲AV成人在线播放| 亚洲国产成人片在线观看无码| 亚洲欧洲精品成人久久曰影片| 伊人色综合久久天天人守人婷| 400部精品国偷自产在线| chinese熟女老女人hd视频| 成人A毛片免费全部播放| 国产精品多人P群无码| 哈昂~哈昂够了太多太深| 久久久久久九九99精品| 男生把QQ放进女生的QQ里韩剧 | 亚洲国产精品高清久久久| 伊人久久东京AV| 被多个男人调教奶头玩奶头| 国产精品美女久久久M| 精品无码人妻夜人多侵犯18| 免费精品一区二区三区第35| 日韩内射美女片在线观看网站| 小12国产萝裸体视频福利| 亚洲综合日韩AV无码毛片| WWW国产精品内射老熟女| 国产精品久久久久久久久免费| 久久99精品久久久久久久不卡| 浓精喷进老师黑色丝袜| 视频视频APP在线看| 亚洲另类激情综合偷自拍图片 | 亚洲熟妇丰满多毛XXXX| CHRISTMAS农村夫妻HO| 国产狂喷水潮免费网站WWW| 久久人人97超碰精品| 日本熟妇色熟妇在线视频播放 | 哈昂~哈昂够了太多了男男| 男女狂进狂出动态图| 调教小SAO货撅起打屁股作文| 亚洲一线产区二线产区区| 爸爸你不能谢在里面来| 好男人好资源神马在线观看| 免费午夜无码18禁无码影视 | 在糖心VLOG唐伯虎女主角是谁| 成年免费视频黄网站ZXGK| 狠狠色丁香久久婷婷综合五月| 欧美乱妇高清无乱码| 性荡视频播放在线视频7777| 中文字日产幕码三区的做法步骤| 国产00高中生在线无套进入| 久久久久亚洲AV综合仓井空| 少妇性饥渴XXⅩXXHD| 一本久久精品一区二区| 国产草草影院CCYYCOM| 久章草在线毛片视频播放| 偷拍中国熟妇牲交| 2021精品久久久久精品免费网| 国产老妇伦国产熟女老妇视频| 免费免APP看大片视频播放器| 午夜A级理论片在线播放不卡 | 国产成人无码久久久精品一 | 精品无码国模私拍视频| 入禽太深免费视频| 在线成人精品国产区免费| 国产精品久久婷婷六月丁香| 男男GAY无套国产| 亚洲AV自慰白浆喷水网站少妇 | 黑人粗大猛烈XXⅩXXBB| 日本XXXX洗澡ⅩXXX偷窥| 野花香高清在线观看视频播放免费 | 国精产品一二二线网站| 人妻中文乱码在线网站| 野花电影在线观看免费720| 国产精品久久久久久久久KTV| 女人张开腿扒开内裤让男生桶| 亚洲国产成人无码AV在线影院| 成人无码AⅤ在线播放| 老师抱着我在教室做| 性少妇SEX麻豆HD中国| 成人嘿咻漫画免费入口| 免费观看高清大片的播放器| 亚洲AV无码成人精品网站漏男| 大尺度一对一视频聊天软件| 免费观看电视剧全集在线播放高清 | 中文字幕人成乱码中国| 黑人粗大与亚裔乱P视频| 四虎免费影院1515WWW| AV无码不卡在线观看免费| 久久久精品中文字幕麻豆发布| 无遮挡呻吟娇喘视频免费播放| 扒开双腿疯狂进出爽爽爽动态图| 久久婷婷综合缴情亚洲狠狠| 亚州日本乱码一区二区三区| 粗大猛烈进出高潮喷浆H| 欧美丰满熟妇BBB久久久| 亚洲婷婷月色婷婷五月| 国内精品卡一卡二卡三| 婷婷综合缴情亚洲狠狠| 成年性生交大片免费看| 欧美极品少妇XXXXⅩ喷水| 曰本BBWW高潮BBWR| 精品亚洲AⅤ无码一区二区三区| 午夜.DJ高清免费观看视频| 风流老太婆大BBWBBWHD视| 人妻熟妇乱又伦精品无码专区| 坐着轮流提双腿能起到什么效果| 久久久久久久99精品国产片| 亚洲国产成人无码AV在线影院| 国产精品VIDEOSSEX国产| 色欲色香天天天综合网站免费| 白嫩无码人妻熟妇啪啪区| 欧美激情一区二区三区成人| 自慰无码一区二区三区| 林静公交车被做到高C的原因| 亚洲人成色77777在线观看| 国内偷窥一区二区三区视频 | 国产色婷婷精品综合在线| 污污污WWW精品国产网站| 国产AV无码专区亚洲精品| 色窝窝无码一区二区三区| 成人午夜又粗又硬又长| 人与禽性7777777| CAOPOREN超碰最新地址| 欧美高大丰满FREESEX| 97精品依人久久久大香线蕉97 | 少妇午夜福利一区二区| 丰满少妇被猛烈进入无码| 日日狠狠久久偷偷色综合96| 成人无码激情视频在线观看| 日韩精品专区AV无码| 成人A毛片免费全部播放| 日韩精品人妻无码久久影院| 趁夫不在给给公侵犯了| 日日躁狠狠躁死你H| 高雅人妻被迫沦为玩物电影BD| 爽一点搔一点叫大声点| 国产韩国精品一区二区三区久久| 无码囯产精品一区二区免费| 国产麻豆精品一区二区三区V视界| 五月丁香六月狠狠爱综合| 国内精品久久久久久久999| 亚洲国产精品福利片在线观看| 久99久无码精品视频免费播放 | 亚洲AV无码专区电影在线观看| 极品国产主播粉嫩在线观看| 亚洲色成人WWW永久在线观看| 久久人妻AV无码中文专区| 中文字幕亚洲精品无码| 欧美人与劲物XXXXZ0OZ| 被强迫各种姿势侵犯N白月视频| 日韩精品久久久肉伦网站| 国产成人毛片在线视频| 亚洲6080YY久久无码产自国| 娇妻强被迫伦姧惨叫 在线| 一本一本大道香蕉久在线精品| 蜜桃人妻无码AⅤ中文字幕| GAY国产GV又粗又长又大| 色噜噜AV亚洲色一区二区| 国产精品日日摸夜夜添夜夜添| 亚洲产国偷v产偷v自拍浪潮AV| 久久99国产综合精品| 1—36集电视剧免费观看36集| 欧美老熟妇性BBBBBXXXX| 肥老熟妇伦子伦456视频| 小受叫床高潮娇喘嗯啊MP3| 精品无码一区二区三区不卡 | 日韩亚洲AV人人夜夜澡人人爽| 国产精东天美AV影业传媒| 亚洲国产精品久久艾草| 美女啪啪网站又黄又免费| 爆乳3把你榨干哦OVA在线观看| 玩弄朋友娇妻呻吟交换电影| 精品无码国产一区二区三区麻豆| 18VIDEOSEX性欧美| 少妇开裆肉丝自慰流白浆| 护士HD老师FREE性ⅩⅩⅩ| 坐公交车居然被弄了2个小时小说| 日韩精品专区在线影院重磅| 国内美女推油按摩在线播放 | 国产自国产自愉自愉免费24区| 永久黄网站色视频免费品善网| 人妻JapanXXXX精品HD| 国产精品人人做人人爽人人添| 亚洲综合小说另类图片五月天| 欧美日本精品一区二区三区 | 西西人体44RT NET毛最多| 久久久久无码国产精品一区 | 日韩精品无码一本二本三本| 国产一区二区精品丝袜| 中文字幕久久熟女蜜桃| 上课忘穿内裤被老师摸到高潮| 极品少妇被黑人白浆直流| 99久久免费精品国产72精品九| 天堂在/线资源中文在线| 久久久不卡国产精品一区二区| 差差差无掩盖30分钟79集| 亚洲国产成人久久综合| 人妻少妇精品无码专区| 含羞草实验室隐藏路径2023| 99久久婷婷国产综合精品| 新妺妺窝人体色7777婷婷| 女主被强迫侵犯H文| 国产麻豆剧果冻传媒|