㈠ Android中壓縮圖片指定大小
注意看這句話,bit.compress(CompressFormat.PNG, 100, baos);
那裡的數字表示 如果不壓縮是100,表示壓縮率為0。
如果是70,就表示壓縮率是70,表示壓縮30%;
所以你的倒數第二句話表示沒有壓縮。
以下是我壓縮的方法,望採納。
/**
* 圖像壓縮並保存到本地
* 返回處理過的圖片
*
*/
private Bitmap
saveImage(String fileName,Bitmap bit) {
File file = new
File(fileName);
if (!file.exists()) {
try
{
file.createNewFile();
} catch (IOException e)
{
e.printStackTrace();
}
}
try
{
ByteArrayOutputStream stream = new
ByteArrayOutputStream();
bit.compress(CompressFormat.JPEG, 70,
stream);
// 70 是壓縮率,表示壓縮30%; 如果不壓縮是100,表示壓縮率為0
FileOutputStream os =
new
FileOutputStream(file);
os.write(stream.toByteArray());
os.close();
return
bit;
} catch (Exception e) {
file = null;
return
null;
}
}
㈡ 圖片壓縮的三種方式
1、等比壓縮,等比壓縮是保持原圖長寬比例的壓縮,只是圖片變小,展示的還是原圖的所有內容(區別於第二種通過Matrix壓縮,可以選取圖片的一部分,類似於上傳頭像時,讓你在圖上選一塊zoom的形式)。等比壓縮用的的主要是BitmapFactory.Options,通過options縮放比例的設置,來生成縮略圖:
2、通過Matrix進行更加靈活的縮放:這種方式主要是通過構建縮放矩陣和Bitmap.createBitmap方法來實現靈活縮放,寬和高縮放的比例可以不一致,而且通過Bitmap.createBitmap方法創建出來的是新的點陣圖,這個點陣圖可以是選取原圖的一部分,而不是對原圖進行整體縮放!類似於上傳頭像時,讓你在原圖上扣下來一塊的效果,控制非常靈活。
3、無損壓縮,無損壓縮是說圖片大小和清晰度看上去和原圖沒有什麼差別,但是確實size縮小了,這里縮小的原理是犧牲了解析度等其他直觀看不到的東西,看起來和原圖一樣,但是一放大就立馬失真了,不會和原圖一樣放大很多才會逐漸變得不清晰。無損壓縮後的圖片像素並不會減少,而Bitmap佔用內存的定義就是像素點占的內存,所以以Bitmap的方式載入到內存中時,和壓縮前佔用的內存是同樣大的,原來會oom的圖片,質量壓縮後同樣會oom;但是,質量壓縮後將流輸出到文件中,文件的size會大幅度減小,所以質量壓縮特別適合在 Android 端進行圖片上傳的時候進行圖片壓縮,既能保持上傳後的清晰度,又能減小size。另外質量壓縮不是可以無限縮小的,降低到一定程度,就算把quality設置的再小,size也不會再降低了。另外這種方式最好返回保存壓縮後的圖片保存的文件路徑,而不要直接返回Bitmap,示例就懶得改了。
一張圖片處理過程,建議先進行等比壓縮或者Matrix壓縮後,再進行質量壓縮,這樣組合使用,不管是生成縮略圖還是圖片上傳,效果都不錯
㈢ Android圖片壓縮與優化的幾種方式
1.使用的圖片最好用png格式
2.如果你的圖片仍然大的話可以在項目裡面點擊右鍵選擇convert to Webp,轉成webp格式圖片可以變小很多!