您好,登錄后才能下訂單哦!
// 由url獲取bitmap對象
is = conn.getInputStream(); // 簡寫方法:is = params[0].openStream()
BitmapFactory.Options newOpts = new BitmapFactory.Options();
bitmap = BitmapFactory.decodeStream(is, null ,
newOpts);
// newOpts.inJustDecodeBounds = false;
// bitmap = BitmapFactory.decodeStream(is);
newOpts.inJustDecodeBounds = false;
Matrix matrix = new Matrix();
int w = newOpts.outWidth;
int h = newOpts.outHeight;
WindowManager manage = getWindowManager();
Display display = manage.getDefaultDisplay();
float hh = display.getHeight();
float ww = display.getWidth();
// Log.e("display.getWidth()t", "display.getWidth()" + ww);
// Log.e("display.getHeight()", "display.getHeight()" + hh);
// Log.e("bitmap.getWidth()", "bitmap.getWidth()" + w);
// Log.e("bitmap.getHeight()", "bitmap.getHeight()" + h);
// int hh = 800;// 這里設置高度為800f
// int ww = 480;// 這里設置寬度為480f
// 縮放比。由于是固定比例縮放,只用高或者寬其中一個數據進行計算即可
float be = 1;// be=1表示不縮放
if ( w > ww)
{// 如果寬度大的話根據寬度固定大小縮放
be = (float) (w / ww);
Log.e("matrix0.", "matrix0." + be);
newbmp = compressImage(bitmap);
return newbmp;
}
else if (w < ww )
{
be = (float) (ww / w);
Log.e("matrix1.", "matrix1." + be);
}
else if (w < h && h > hh)
{// 如果高度高的話根據高度固定大小縮放
be = (int) (h / hh);
Log.e("matrix2.", "matrix2." + be);
}
if (be <= 0)
be = 1;
// newOpts.inSampleSize = (int) be;//設置縮放比例
Log.e("matrix.postScale", "matrix.postScale" + be);
matrix.postScale(be, be);
// newOpts.inSampleSize = (int) be;// 設置縮放比例
// 重新讀入圖片,注意此時已經把options.inJustDecodeBounds 設回false了
// bitmap = BitmapFactory.decodeStream(is, null ,
// newOpts);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
newbmp = compressImage(bitmap);// 壓縮好比例大小后再進行質量壓縮
mCacheMap.put(strURL, newbmp);
/**
* 質量壓縮
*
* @param p_w_picpath
* @return
*/
private Bitmap compressImage(Bitmap p_w_picpath)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
p_w_picpath.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 質量壓縮方法,這里100表示不壓縮,把壓縮后的數據存放到baos中
int options = 100;
while (baos.toByteArray().length / 1024 > 100)
{ // 循環判斷如果壓縮后圖片是否大于100kb,大于繼續壓縮
baos.reset();// 重置baos即清空baos
options -= 10;// 每次都減少10
p_w_picpath.compress(Bitmap.CompressFormat.JPEG, options, baos);// 這里壓縮options%,把壓縮后的數據存放到baos中
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());// 把壓縮后的數據baos存放到ByteArrayInputStream中
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);// 把ByteArrayInputStream數據生成圖片
// try {
// FileOutputStream out = new
// FileOutputStream(Environment.getExternalStorageDirectory()
// + "/faceImage1.jpg");
// Log.i("path",
// Environment.getExternalStorageDirectory()+"/faceImage1.jpg");
// bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
// }
// catch (Exception e) {
// e.printStackTrace();
// }
return bitmap;
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。