導航:首頁 > 文件處理 > android大圖壓縮

android大圖壓縮

發布時間:2024-08-26 11:25:58

android 縮放和壓縮的區別

android 縮放和壓縮圖片可以如下解釋:

壓縮圖片
這里簡單的將一個圖片文件轉換為 Bitmap ,並且在轉換的過程中對圖片質量進行簡單壓縮:
bitmap.compress(Bitmap.CompressFormat.JPEG, int quality, FileOutputStream fos);

注意這里的 quality 的范圍為 0~100 ,經過測試如果這個值設置比較低的話圖片會非常不清晰, 基本不可用, 0~100 的值可以參考類似Photoshop之類輸出圖片時選擇的圖片質量.
此方法只是單純對圖片質量進行處理, 並不會改變其大小, 如果需要改變圖片文件的大小, 最好是使用縮放, 這個可以在保證一定的圖片清晰度的情況下減少了圖片大小, 畢竟手機屏幕就那麼點, 你把 2000px * 1000px 的圖片改為 500px * 250px 在手機用戶看來也不會有太嚴重的不適感, 而如果你只設置圖片的 quality 想來改變文件大小, 你最後會發現得到的是一個 2000px * 1000px 的幾個色塊.
縮放圖片
先提代碼看看:

[java] view plain
/**
* 保持長寬比縮小Bitmap
*
* @param bitmap
* @param maxWidth
* @param maxHeight
* @return
*/
public Bitmap resizeBitmap(Bitmap bitmap, int maxWidth, int maxHeight) {

int originWidth = bitmap.getWidth();
int originHeight = bitmap.getHeight();

// no need to resize
if (originWidth < maxWidth && originHeight < maxHeight) {
return bitmap;
}

int width = originWidth;
int height = originHeight;

// 若圖片過寬, 則保持長寬比縮放圖片
if (originWidth > maxWidth) {
width = maxWidth;

double i = originWidth * 1.0 / maxWidth;
height = (int) Math.floor(originHeight / i);

bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
}

// 若圖片過長, 則從上端截取
if (height > maxHeight) {
height = maxHeight;
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
}

// Log.i(TAG, width + " width");
// Log.i(TAG, height + " height");

return bitmap;
}

這里演示是將圖片縮小到一個max范圍內, 而不是直接將變成硬性的變成某個尺寸的圖片, 因為一般來說這種設置max的方式符合大部分需要, 如果必須將圖片變成某個指定尺寸可以直接使用 Bitmap.createScaledBitmap 方法, 也是下面要介紹的.
此函數主要就是使用了 Bitmap 的兩個靜態方法, 一個是:
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

此方法就會把一個 Bitmap 圖片 縮放 成指定的尺寸.

⑵ 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;
}
}

閱讀全文

與android大圖壓縮相關的資料

熱點內容
linux命令強制退出 瀏覽:77
videostation怎麼添加文件夾 瀏覽:184
pythonrawsocket 瀏覽:861
編譯原理計算思維能力 瀏覽:246
衛星加密技術的應用 瀏覽:900
怎麼看手機實用頻率高的app 瀏覽:72
c實現sha1演算法 瀏覽:783
h200cy1是多大壓縮機 瀏覽:62
hbase查看錶結構命令 瀏覽:861
怎麼將rar解壓成安裝包 瀏覽:29
程序員幾點開始學習 瀏覽:201
linux百度雲文件 瀏覽:398
下載軟體解壓到哪裡合適 瀏覽:264
百度智能雲演算法工程師 瀏覽:98
模鍛造pdf 瀏覽:211
dom編程api 瀏覽:58
批處理復制命令 瀏覽:503
廢鐵壓縮打包機 瀏覽:98
linux打開圖形界面命令 瀏覽:368
女孩子學習程序員還是剪輯師好 瀏覽:284