導航:首頁 > 操作系統 > androiddecodefile

androiddecodefile

發布時間:2023-02-14 05:43:21

android bitmapfactory.decodefile返回null怎麼解決

這個android 的一個bug 。在android 2.2 以下(包括2.2) 用 BitmapFactory.decodeStream() 這個方法,會出現概率性的解析失敗的異常。而在高版本中,eg 2.3 則不會出現這種異常。

各種網路、各種谷歌、各種分析問題的過程就不再多說了,這里直接說一個解決方法,如下:
//定義一個根據圖片url獲取InputStream的方法
public static byte[] getBytes(InputStream is) throws IOException {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024]; // 用數據裝
int len = -1;
while ((len = is.read(buffer)) != -1) {
outstream.write(buffer, 0, len);
}
outstream.close();
// 關閉流一定要記得。
return outstream.toByteArray();
}

//然後使用方法decodeByteArray()方法解析編碼,生成Bitmap對象。
byte[] data = getBytesFromInputStream(new URL(imgUrl).openStream());
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);

② android怎樣把文件的指定路

這個還要看是什麼文件,舉個例子獲取圖片文件。 Bitmap bitmap = BitmapFactory.decodeFile(android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/data/abc/def/ghi.jkl")

③ Android 圖片載入(一)高效載入Bitmap 基礎篇

由於Bitmap的特殊性以及Android對單個應用所規定的最大內存限制,我們在同時載入大量Bitmap時很容易發生內存溢出,即我們通常所說的OutOfMemoryError(OOM),因此高效載入Bitmap就成為了每個Android開發者的必備技能。

在學習如何高效地載入Bitmap之前,首先介紹一下如何載入一個Bitmap。我們都知道,Bitmap在Android中通常指的是一張圖片,那麼如何將JPG、PNG等格式的圖片轉換成Bitmap對象呢?BitmapFactory類給我們提供了一些方法:

接下來開始介紹如何高效地載入Bitmap,其實核心思想很簡單: 就是採用BitmapFactory.Options參數來調整圖片尺寸來適配控制項的大小。

假如我們顯示圖片的控制項ImageView寬高為100×100像素,而圖片的尺寸為1024×1024像素,這個時候如果將整個圖片載入進來並顯示到控制項上,自然是很佔用內存資源的。這個時候可以通過BitmapFactory.Options按一定的采樣率載入縮小後的圖片,再將縮小後的圖片顯示到ImageView中,這樣就能減小內存佔用從而在一定程度上避免OOM的發生。

通過BitmapFactory.Options來縮放圖片,主要是使用它的inSampleSize參數,也就是前面提到的采樣率。當采樣率inSampleSize為1時,采樣後的圖片大小為原圖大小;當采樣率inSampleSize>1,比如為2時,采樣後的圖片寬高都為原圖的1/2,即像素降為原圖的1/4,佔用的內存大小也就是原圖的1/4;比較特殊的是,當采樣率inSampleSize<1時,系統會自動將該值當做1來處理。 因此可以得出一個結論:采樣率inSampleSize必須是大於1的整數圖片才會有縮小的效果,並且采樣率同時作用於寬高,也就是說采樣後的圖片會縮小到原圖的1/(inSampleSize^2)。比如inSampleSize=4,那麼縮放比例為1/16。

我們現在知道了,通過采樣率可以提高圖片的載入效率,那麼如何才能計算出最合適的采樣率?我們可以按照如下流程:

接下來以decodeFile方法為例實現圖片的縮放,其他三個方法處理方式類似。

下一篇: Android 圖片載入(二)圖片載入框架Glide 入門篇

《Android開發藝術探索》

④ Android 在知道文件路徑以及文件名稱讀取SD卡上的圖片該怎麼做

不知道你是想讀取出來幹嘛,
但是讀取sd卡的圖片文件第一步要獲取圖片的絕對路徑,
Environment.getExternalStorageDirectory().toString()就是獲取sd卡的絕對路徑,由於android各個版本不同,返回的路徑也可能不相同,
String imgFilePath = Environment.getExternalStorageDirectory().toString()
+ 「/DCIM/device.png
得到圖片的絕對路徑以後,可以通過流讀取這個文件,如果你只是想顯示到界面的話,那可以使用BitmapFactory來構建一個Bitmap對象,這個對象是可以直接應用於imageView的

創建方法BitmapFactory.decodeFile("圖片路徑")

⑤ android 已經知道路徑怎麼將路徑中的圖片變成Bitmap

/**
* 獲取本地圖片並指定高度和寬度
*/
public static Bitmap getNativeImage(String imagePath)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// 獲取這個圖片的寬和高
Bitmap myBitmap = BitmapFactory.decodeFile(imagePath, options); //此時返回myBitmap為空
//計算縮放比
int be = (int)(options.outHeight / (float)200);
int ys = options.outHeight % 200;//求余數
float fe = ys / (float)200;
if (fe >= 0.5)
be = be + 1;
if (be <= 0)
be = 1;
options.inSampleSize = be;
//重新讀入圖片,注意這次要把options.inJustDecodeBounds 設為 false
options.inJustDecodeBounds = false;
myBitmap = BitmapFactory.decodeFile(imagePath, options);
return myBitmap;
}
/**
* 以最省內存的方式讀取本地資源的圖片 或者SDCard中的圖片
* @param imagePath
* 圖片在SDCard中的路徑
* @return
*/
public static Bitmap getSDCardImg(String imagePath)
{
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
//獲取資源圖片
return BitmapFactory.decodeFile(imagePath, opt);
}

⑥ android怎麼實現導入圖片

1. 圖片放在sdcard中, Bitmap imageBitmap = BitmapFactory.decodeFile(path) (path 是圖片的路徑,跟目錄是/sdcard)2. 圖片在項目的res文件夾下面 //得到application對象 ApplicationInfo appInfo = getApplicationInfo(); //得到該圖片的id(name 是該圖片的名字,"drawable" 是該圖片存放的目錄,appInfo.packageName是應用程序的包) int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName); //代碼如下 public Bitmap getRes(String name) {ApplicationInfo appInfo = getApplicationInfo();int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName);return BitmapFactory.decodeResource(getResources(), resID);}3. 圖片放在src目錄下 String path = "com/xiangmu/test.png"; //圖片存放的路徑 InputStream is = getClassLoader().getResourceAsStream(path); //得到圖片流4.android中有個Assets目錄,這里可以存放只讀文件資源獲取的方式為 InputStream is = getResources().getAssets().open(name);

閱讀全文

與androiddecodefile相關的資料

熱點內容
解壓文件蘋果手機rar 瀏覽:145
centos開機命令行模式 瀏覽:695
遍歷所有listpython 瀏覽:660
力控加密文件夾 瀏覽:515
如何更改移動伺服器密碼 瀏覽:686
蘋果8p手機加密 瀏覽:749
ipad建文件夾怎麼弄 瀏覽:833
iphone13對wap3加密 瀏覽:555
pdf文件打開失敗 瀏覽:913
dubbo怎麼調用不同伺服器介面 瀏覽:40
全能解壓王app歷史版本 瀏覽:75
優先隊列與拓撲排序演算法 瀏覽:281
pdf轉換formacbook 瀏覽:871
pdf文件內容怎麼編輯 瀏覽:48
134壓縮機排氣溫度多少 瀏覽:256
unity等待編譯後 瀏覽:806
黑鯊手機鎖屏視頻在哪個文件夾 瀏覽:781
wow地圖解壓後怎麼壓縮 瀏覽:823
有pdf卻打不開 瀏覽:462
七星彩軟體app怎麼下載 瀏覽:219