久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

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

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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
麻豆精品在线视频| 久久久久欧美精品| 激情婷婷欧美| 亚洲人成在线网站| 精品丝袜在线| 久久九九精品| 蜜臀av免费一区二区三区| 国产在线成人| 亚洲一区欧美激情| 日韩精品一级中文字幕精品视频免费观看| 亚洲小说欧美另类婷婷| 久久国产影院| 欧美在线网站| 亚洲免费福利一区| 婷婷视频一区二区三区| 蜜臀久久99精品久久久久宅男| 午夜一级在线看亚洲| 一级欧美视频| 国产精品一二| 在线看片福利| 红桃视频亚洲| 日韩av电影一区| 欧美a一区二区| 日本午夜大片a在线观看| 国产99精品| 亚洲综合婷婷| 久久精品一区二区三区中文字幕| 国产乱码午夜在线视频| 亚洲男女av一区二区| 亚洲精品一级| 国产精品第十页| 欧美片第1页| 免费观看日韩电影| 国产精品三p一区二区| 成人片免费看| 欧美专区一区二区三区| 国产图片一区| 日韩高清不卡| 中文字幕一区日韩精品| 国产日韩欧美一区二区三区在线观看 | 中文字幕av亚洲精品一部二部| 日韩av影院| 日本久久黄色| 久久精品不卡| 欧美一区免费| 蜜桃成人精品| 日韩高清在线观看一区二区| 超碰99在线| 日韩精品一级中文字幕精品视频免费观看| 国产情侣一区| 激情欧美丁香| 久久激情五月婷婷| 99久久视频| 国产一级成人av| 2023国产精品久久久精品双| 欧美一级久久| 在线日韩欧美| 国产精品一区二区免费福利视频| 中文在线а√在线8| 一本一道久久a久久| sm捆绑调教国产免费网站在线观看| 中文字幕日韩亚洲| 欧洲亚洲一区二区三区| 国产午夜久久av| 日韩午夜精品| 精品国产18久久久久久二百| 蜜乳av另类精品一区二区| 久久精品国产成人一区二区三区| 免费视频久久| 亚洲va中文在线播放免费| 日韩国产高清在线| 黄色日韩在线| 中文字幕在线视频久| 亚洲午夜久久| 欧美日韩高清| 美女av在线免费看| 国产精品红桃| 日韩精品一页| 六月婷婷一区| 欧美日韩水蜜桃| 精品三级av| 日韩精品国产欧美| 午夜精品婷婷| 精品捆绑调教一区二区三区| 国产欧美日韩精品一区二区免费| 狠狠干综合网| 免费一二一二在线视频 | 亚洲一区二区三区免费在线观看 | 久久久9色精品国产一区二区三区| 欧美日本久久| 亚洲美女久久| 中文久久精品| 99精品视频在线| 国产成人精品一区二区三区免费| 日本91福利区| 蜜臀久久久99精品久久久久久| 亚洲国内欧美| 欧产日产国产精品视频| 精品理论电影在线| 日韩和欧美一区二区| 国产精品视区| 午夜欧美精品久久久久久久| 免费看av不卡| 国产suv精品一区二区四区视频| 91成人福利| 亚洲精品麻豆| 日韩综合一区二区三区| 日韩中文字幕91| 免费久久99精品国产自在现线| 免费国产自久久久久三四区久久 | 国产日韩欧美一区在线| 中文无码日韩欧| 亚洲综合不卡| 亚洲欧美日韩专区| 国产农村妇女精品一区二区| 欧美.日韩.国产.一区.二区| 九九精品调教| 九色porny丨国产首页在线| 成人国产精品| 精品理论电影在线| 精品视频在线一区二区在线| 国产精品网站在线看| 日韩av午夜在线观看| 日韩国产欧美在线视频| 日韩三级一区| 日本va欧美va瓶| 中文字幕视频精品一区二区三区| 亚洲视频电影在线| 日本强好片久久久久久aaa| 日本精品久久| 国产精品99久久免费| 久久精品国产一区二区| 国产中文欧美日韩在线| 久久久久久夜| 韩国精品主播一区二区在线观看| 亚洲一区资源| 免费成人网www| 日韩精品一区第一页| 日韩精品亚洲一区二区三区免费| 欧美日韩午夜| 国产一区三区在线播放| av资源中文在线| 亚洲大片在线| 亚洲欧美日本国产专区一区| 色综合视频一区二区三区日韩 | 99久久夜色精品国产亚洲狼 | 国产精品乱战久久久| 欧美黄页在线免费观看| 国产精品jk白丝蜜臀av小说| 欧美好骚综合网| 午夜av一区| 日韩欧美四区| 精品国产乱码久久久久久1区2匹| 神马午夜在线视频| 亚洲精品小说| 日韩和欧美一区二区| 久久精品女人| 欧洲毛片在线视频免费观看| 五月亚洲婷婷 | 99国产精品| 日韩久久99| 91视频一区| 亚洲专区在线| 国产精品一级| 久久久精品日韩| 在线看片日韩| 精品一区二区男人吃奶 | 石原莉奈一区二区三区在线观看| 日韩欧美2区| 中国字幕a在线看韩国电影| 91精品观看| 欧美精品中文字幕亚洲专区| 国产91在线精品| 丝袜诱惑制服诱惑色一区在线观看| 日韩精品免费视频人成| 国产成人久久精品麻豆二区 | 蜜臀国产一区二区三区在线播放| 国产精品亚洲综合久久| 中文在线а√在线8| 日韩精品一二三四| 精品三级国产| 亚洲精品电影| 九九99久久精品在免费线bt| 好吊视频一区二区三区四区| 国产精品男女| 亚洲国产日韩欧美在线| 国产视频一区二| 欧美精品一区二区三区精品| 国产一级成人av| 欧美精品一线| 久久精品三级| 亚洲精品护士| 成人羞羞在线观看网站| 日本精品在线播放| 欧美丝袜一区| 免费在线播放第一区高清av| 五月天综合网站| 国产成人精品福利| 亚洲va久久| 婷婷综合网站|