Android讀取服務(wù)器圖片的三種方法
Android鏈接服務(wù)器獲取圖片在此提供三種方法,已通過驗證,無誤。
方法一:
public static Bitmap getImage(String path){
try {
HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
System.out.println("tdw1");
if(conn.getResponseCode() == 200){
InputStream inputStream = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
在第一種方法中,從conn的輸入流中獲取數(shù)據(jù)將其轉(zhuǎn)化為Bitmap型數(shù)據(jù)。
在功能代碼中:
image.setImageBitmap(getImage("路徑"));
image為ImageView型控件。
第二種方法:
public static Bitmap getImage1(String path){
HttpGet get = new HttpGet(path);
HttpClient client = new DefaultHttpClient();
Bitmap pic = null;
try {
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
pic = BitmapFactory.decodeStream(is); // 關(guān)鍵是這句代
} catch (Exception e) {
e.printStackTrace();
}
return pic;
}
這個方法類似上面那個方法。在功能代碼中設(shè)置是一樣的
第三種方法:
public static Uri getImage2(String path,File cacheDir){
File localFile = new File(cacheDir,MD5.getMD5(path)+path.substring(path.lastIndexOf(".")));
if(localFile.exists()){
return Uri.fromFile(localFile);
}else
{
HttpURLConnection conn;
try {
conn = (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
System.out.println("tdw");
FileOutputStream outputStream = new FileOutputStream(localFile);
InputStream inputStream = conn.getInputStream();
byte[] buffer = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer))!=-1){
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
return Uri.fromFile(localFile);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
第三種方法,將從服務(wù)器獲取的數(shù)據(jù)存入本地的文件中,如果文件已存在,則不需要從服務(wù)器重新獲取數(shù)據(jù)。
在功能代碼中:
image.setImageURI(getImage2(path, cache));
上面代碼中設(shè)置圖片為緩存設(shè)置,這樣如果圖片資源更新了,則需要重新命名文件的名字,這樣才能夠重新加載新圖片。
cache = new File(Environment.getExternalStorageDirectory(),"cache");
if(!cache.exists()){
cache.mkdirs();
}
這里是設(shè)置 緩存圖片的路徑。
以上為三種方法。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android將圖片上傳到php服務(wù)器的實例代碼
- Android 通過Base64上傳圖片到服務(wù)器實現(xiàn)實例
- Android 通過webservice上傳多張圖片到指定服務(wù)器詳解
- Android選擇圖片或拍照圖片上傳到服務(wù)器
- Android開發(fā)中調(diào)用系統(tǒng)相冊上傳圖片到服務(wù)器OPPO等部分手機上出現(xiàn)短暫的顯示桌面問題的解決方法
- Android Socket服務(wù)端與客戶端用字符串的方式互相傳遞圖片的方法
- Android使用post方式上傳圖片到服務(wù)器的方法
- Android異步上傳圖片到PHP服務(wù)器
- Android從服務(wù)器獲取圖片的實例方法
- android傳送照片到FTP服務(wù)器的實現(xiàn)代碼
相關(guān)文章
Android開發(fā)數(shù)據(jù)結(jié)構(gòu)算法ArrayList源碼詳解
這篇文章主要為大家介紹了Android開發(fā)數(shù)據(jù)結(jié)構(gòu)算法ArrayList源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
一文理解Android系統(tǒng)中強指針的實現(xiàn)
因為Android中很多地方代碼是用C++編寫,為了能夠保證C++中指針能夠被正確的釋放,于是Android引入了其實在C++中已經(jīng)有的智能指針技術(shù)2021-10-10
Flutter封裝組動畫混合動畫AnimatedGroup示例詳解
這篇文章主要為大家介紹了Flutter封裝組動畫混合動畫AnimatedGroup示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Flutter banner_view 輪播圖的使用及實現(xiàn)代碼
這篇文章主要介紹了Flutter banner_view 輪播圖的使用及實現(xiàn)代碼,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07
Bootstrap 下拉菜單.dropdown的具體使用方法
這篇文章主要介紹了Bootstrap 下拉菜單.dropdown的具體使用方法,詳細講解下拉菜單的交互,有興趣的可以了解一下2017-10-10
Flutter?WebView?預(yù)加載實現(xiàn)方法(Http?Server)
這篇文章主要介紹了Flutter?WebView?預(yù)加載實現(xiàn)方法,包括資源的配置,資源的下載和存儲,版本的管理,如何根據(jù)實際url獲取對應(yīng)HttpServer?bind的url等,需要的朋友可以參考下2022-05-05

