1. 程式人生 > >java壓縮圖片記憶體大小,但不改變解析度大小,第一種方式

java壓縮圖片記憶體大小,但不改變解析度大小,第一種方式

/**
* @Title: compressPicByQuality 
* @Description: 壓縮圖片,通過壓縮圖片質量,保持原圖大小
* @param  quality:0-1
* @return byte[] 
* @throws
*/
public static byte[] compressPicByQuality(byte[] imgByte, float quality) {
byte[] inByte = null;
try {
ByteArrayInputStream byteInput = new ByteArrayInputStream(imgByte);
BufferedImage image = ImageIO.read(byteInput);

// 如果圖片空,返回空
if (image == null) {
return null;
}
// 得到指定Format圖片的writer
Iterator<ImageWriter> iter = ImageIO
.getImageWritersByFormatName("jpeg");// 得到迭代器
ImageWriter writer = (ImageWriter) iter.next(); // 得到writer

// 得到指定writer的輸出引數設定(ImageWriteParam )
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // 設定可否壓縮
iwp.setCompressionQuality(quality); // 設定壓縮質量引數

iwp.setProgressiveMode(ImageWriteParam.MODE_DISABLED);

ColorModel colorModel = ColorModel.getRGBdefault();
// 指定壓縮時使用的色彩模式
iwp.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel,
colorModel.createCompatibleSampleModel(16, 16)));

// 開始打包圖片,寫入byte[]
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 取得記憶體輸出流
IIOImage iIamge = new IIOImage(image, null, null);

// 此處因為ImageWriter中用來接收write資訊的output要求必須是ImageOutput
// 通過ImageIo中的靜態方法,得到byteArrayOutputStream的ImageOutput
writer.setOutput(ImageIO
.createImageOutputStream(byteArrayOutputStream));
writer.write(null, iIamge, iwp);
inByte = byteArrayOutputStream.toByteArray();
} catch (IOException e) {
System.out.println("write errro");
e.printStackTrace();
}
return inByte;
}

相關推薦

java壓縮圖片記憶體大小改變解析度大小第一方式

/*** @Title: compressPicByQuality * @Description: 壓縮圖片,通過壓縮圖片質量,保持原圖大小* @param  quality:0-1* @return byte[] * @throws*/public static byte

java壓縮圖片記憶體大小改變解析度大小第二方式

/*** @Title: compressPic * @Description: 壓縮圖片,通過壓縮圖片質量,保持原圖大小* @param  quality:0-1    * @return byte[] * @throws*/public static byte[] co

win10安裝JDK cmd中可以執行java能用javac解決方案

win10安裝JDK cmd中可以執行java,但不能用javac 網上教程(1)新建->變數名"JAVA_HOME",變數值"C:\Java\jdk1.8.0_05"(即JDK的安裝路徑) (2)編輯->變數名"Path",在原變數值的最後面加上“;%JAVA_HOME%\bin;%JAVA_

將一個句子裡的英文單詞倒敘輸出改變單詞裡的字母順序

 #include <stdio.h>  #include <string.h>  #define MAX 1024 int change(char *str,int len)  {         int i = 0;   

java壓縮圖片大小改變圖片解析度

檔案上傳時,有的圖片我們並不強求的圖片質量,因為圖片過大的話,會佔用頻寬以及儲存空間。因此在上傳圖片的時候就要對圖片進行壓縮處理操作,經過百度,網上普遍有兩種,一種是改變圖片長寬,按比例或者設定長寬對圖片進行縮小,另一種是不改變圖片的寬高,改變圖片的質量。關於改變長寬的做法,

用background-size實現 背景圖片自適應瀏覽器大小變形

 很多flash站都用到了一張背景圖,然後根據瀏覽器大小自動縮放,但圖片不變形。在CSS3中,有屬性:background-size: cover; //只支援IE9+ -webkit-background-size: cover; //webkit核心 -moz-bac

java繪製圖片驗證碼(看換一張)

現在正式開發中圖片驗證碼好像已經很少用了,但是為了加深個人印象,做個小筆記。 驗證碼實現分析 在用java生成一張固定尺寸的圖片,會用到api是BufferedImage(int wi

【李人的部落格】好記性不如爛筆頭。 記憶體雖快持久。

好記性不如爛筆頭。 記憶體雖快,但不持久 我有嘿嘿嘿嘿眼圈【♥】(ˆoˆԅ) 一次擦肩而過可能就再也見不到了哦! Σ(TωT)努力-- 如果你想學習交流?        Fork Me G

java 壓縮圖片至指定大小

需求: 壓縮圖片至300k以下一開始沒有思路在網上搜,發現google有個外掛叫Thumbnails,然後看到了這篇文章:https://blog.csdn.net/u010355502/article/details/77197616思路很簡單,按一定的比例壓縮圖片,如果壓

Java壓縮圖片util,可等比例寬高失真壓縮,也可直接指定壓縮後的寬高

package com.yipai.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNot

Snipaste - 開發了三年的截圖工具只是截圖

開發 cal 官網 穿透 oba 此外 完全 1.0 頻道 先不要在意標題的“三年”,讓我先介紹一下軟件的功能。 Snipaste ,顧名思義, Snip + Paste ,截圖 + 貼圖。 截圖: 貼圖,即是使圖片成為一個窗口並置頂顯示: 貼圖窗口可以旋轉、縮放

文件操作是一個存為字符串格式的登陸系統有增刪改查的功能是我想要的。。。

str repl 修改 blog 一個 ice body pwd 刪除 def register(NAME, PWD, TEL): with open(‘userdate.txt‘, ‘a‘, encoding=‘utf-8‘) as f: new

Eclipse 無輸出報錯

bug sof app 標簽 clip when ogr pan 解決方法 解決方法: 若界面中都沒有console選項,則 工具欄 Window - Show View - Console Window - Preferences - Run/Debug - Conso

在Python中匯入自己寫的類被劃紅線影響執行

之前在學習Python+selenium的過程中,匯入自己寫的包檔案時,與之相關的方法等都會被劃紅線,但並不影響程式碼執行,如圖:   看著紅線確實有點強迫症,並且在這個過程當時,當使用該檔案裡的方法時不會自動提示方法名,只能靠手全部輸入,這種容易造成手誤,對於小白特別容易降低編寫效

《惢客創業日記》2018.09.18(週二) 我支援你一定看好你。

  今天約了5位朋友吃飯,還好,雖然下著雨,但他們都如約到場,對我來說,實屬難得。他們都是我職業生涯中交往時間較長的朋友,長年在類似國企的環境中工作,沒有什麼超出企業範圍外的野心和抱負,對於網際網路還停留在新聞和馬雲等首富人物的認知上。之所以送書,是因為我們之間的交情,怕他們今後知道我做惢客這件事,

【Microsoft】VBE6EXT.OLB能被載入開巨集編輯記憶體溢位

十有八九十,是同時安裝了office和WPS,而WPS把OFFICE的登錄檔目錄佔用了,嘗試手動修改看看。 解決方法: win+r調出執行的視窗 輸入regedit確定 開啟登錄檔編輯器 找到這個路徑:HKEY_CLASSES_ROOT\TypeLib\{0002E157-0000-0000-C

python去除列表中的重複元素改變原列表

‘’’ 去除列表中的重複元素 1.列表中的元素有重複,需要去掉重複元素 2.要求保留原來的元素順序 3.不需要返回值,直接修改原列表即可 ‘’’ def duplicate_removal(lt): lt1 = [] for i in lt: if i

MySQL 可以用localhost 連線能用IP連線的問題區域網192.168.*.* 無法連線mysql

Mysql 預設是沒有開啟這個許可權的(只允許使用 host:localhost,或者 host:127.0.0.1),如果想用 host:192.168.1.* ,來訪問mysql ,需要手動開啟這個許可權進入Mysql終端輸入這個命令 1.開啟cmd視窗,進入MyS

[winform] 關於如何清空DataGridView刪除標題行

對於標題行需要繫結資料來源的DataGridView,在清空時,若直接使用this.datagridview1.DataSource=null的方式,則會把繫結好的資料來源都清空,只有在下次重新開啟窗體時,才會初始化成繫結資料來源的狀態。 而使用 this.dataGrid