2016-09-24 48 views
0

我想從網址加載圖像並將其保存在SD卡中的文件中,然後從文件加載並在圖像視圖中顯示。使用畢加索從url獲取圖像

所以我試圖使用畢加索加載圖像。但它沒有在圖像視圖上顯示。

這裏是網址:

http://xesoftwares.co.in/contactsapi/profile_images/d34b638b93773140eb94d5f03c20237c.jpg

導入圖像使用畢加索。

Picasso.with(MainActivity.this).load(url).into(profileImage); 

如何從網站下載圖片。將它保存在SD卡中的文件中,然後從文件中加載圖像以顯示在圖像視圖上?

請幫忙。謝謝..

+1

你真的想保存到SD卡嗎?畢加索會下載,只要你想顯示的圖像,並將其存儲在應用程序緩存 – Stallion

+0

好吧,但它爲什麼不工作?@Stallion – Sid

+0

把你的相關完整的代碼比清單權限的單行還 – Stallion

回答

3

使用GLIDE庫自動圖像存儲到緩存.....

Glide.with(context).load(url).into(profileImage); 

注: - 只有你需要加載圖像互聯網第一次。當圖像加載它的工作沒有互聯網。

編輯: - 使用此gradle這個

compile 'com.github.bumptech.glide:glide:3.7.0' 

輸出: -

o

+0

編譯庫的路徑? @sushildlh – Sid

+0

但爲什麼畢加索不工作? @sushildlh – Sid

+1

畢加索工作正常...可能是一些OutMerroyExcepton在您的設備檢查您的LagCat錯誤.....在問題我更新輸出.... – sushildlh

0

要將其保存到SD卡中,您必須聲明使用權限從清單中的SD卡讀取權限,還要求用戶爲Android 5.0+授予這些權限。所有這些都在Android開發人員官方網站上清楚地記錄。 更改MainActivity.class到getApplicationContext()

+0

我已經聲明的權限。問題是它沒有獲得負擔。@rei koleci – Sid

+0

你有沒有做出我建議的改變? –

+0

畢加索也保存在緩存中。你不需要滑翔。 –

0

地址:

<manifest ...> 
    <uses-permission android:name="android.permission.INTERNET" /> 

在你的清單文件,否則源不能下載。

如果你想將其保存在SD卡,您需要另一個權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

爲了保存它。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

如果您想在將來獲取該文件。

,如果你想將其保存到外部目錄下,你可以試試這個:

public void setUpDirectory(String folderName,String source){ 

     File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+folderName); 

     if(!directory.exists() && !directory.isDirectory()) { 
      directory.mkdirs(); 
     } 

     URL imageurl = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(imageurl.openConnection().getInputStream()); 
     saveFile(directory,bitmap); 
    } 


private void saveFile(File fileName,Bitmap bmp){ 


FileOutputStream outputStream = null; 
try { 
    outputStream = new FileOutputStream(fileName); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, outputStream); // 100 will be ignored 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
finally { 
    try { 
     if outputStream != null) { 
      outputStream .close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


} 
0

如果你已經把圖像在XML中刪除它的ImageView的背景。

+0

把這些作爲評論或編輯你現有的答案.. – Stallion