1. 程式人生 > >Android從Internet獲取圖片並儲存到快取

Android從Internet獲取圖片並儲存到快取

public class MainActivity extends AppCompatActivity {
    private Button button;
    private  File file;
    private  String path;
    private Handler handler=new Handler(){
        @Override
public void handleMessage(Message msg) {
            switch (msg.what){
                case 0:
                    ImageView iv= (ImageView) findViewById(R.id.imageView
); iv.setImageBitmap((Bitmap) msg.obj); Toast.makeText(MainActivity.this,"從網路獲取圖片",Toast.LENGTH_LONG).show(); break; case 1: Toast.makeText(MainActivity.this,"獲取圖片失敗",Toast.LENGTH_LONG).show(); break
; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.button); } public void click(View view) { path
= "http://192.168.3.2:8080/hehe.jpg"; file = new File(getCacheDir(), getFileName(path)); if (file.exists()) { Bitmap bm= BitmapFactory.decodeFile(file.getAbsolutePath()); ImageView iv= (ImageView) findViewById(R.id.imageView); iv.setImageBitmap(bm); Toast.makeText(MainActivity.this,"快取的圖片",Toast.LENGTH_LONG).show(); } else { new Thread() { @Override public void run() { //設定網路路徑 //設定URL try { URL url = new URL(path); //獲取網路連線物件 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //初設連線設定,請求方式,讀取超時,連線超時 conn.setRequestMethod("GET"); conn.setReadTimeout(5000); conn.setConnectTimeout(5000); //開啟連線 conn.connect(); //連線成功 if (conn.getResponseCode() == 200) { //獲取輸入流物件,此時請求的為一個圖片物件 InputStream is = conn.getInputStream(); //儲存檔案到快取 //建立檔案 FileOutputStream fos = new FileOutputStream(file); int lens = 0; byte[] bytes = new byte[1024]; while ((lens = is.read(bytes)) != -1) { fos.write(bytes, 0, lens); } fos.close(); Bitmap bm= BitmapFactory.decodeFile(file.getAbsolutePath()); //利用訊息處理機制傳送給主執行緒,請求更新UI Message ms = handler.obtainMessage(); ms.obj=bm; ms.what = 0; handler.sendMessage(ms); } else { Message ms = handler.obtainMessage(); ms.what = 1; handler.sendMessage(ms); } } catch (IOException e) { e.printStackTrace(); } } }.start(); } } public String getFileName(String path){ int index=path.lastIndexOf("/"); return path.substring(index+1); } }

三.佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="study.com.cacheinternet.MainActivity">
    <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:onClick="click"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
    <ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/imageView"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
</RelativeLayout>
四.在配置檔案中新增訪問網路的許可權
<uses-permission android:name="android.permission.INTERNET"/>

相關推薦

AndroidInternet獲取圖片儲存快取

public class MainActivity extends AppCompatActivity { private Button button; private File file; private String path; private Handler hand

android網路獲取圖片顯示和儲存

如何不斷獲取圖片並顯示出來,達到視訊的效果。 程式碼: <span style="font-size:12px;">publicclass GetPictureFromInternetActivity extends Activity  {      p

Android 相機拍照獲取圖片儲存到指定位置。

public void takePhone(View view) { if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXT

URL獲取圖片保存到本地

pos ons ring file timeout str oca pan load      /// <summary> /// HttpWebRequest Property /// </summary&g

使用Android系統呼叫裁剪圖片儲存

順序:開啟圖片--->獲取圖片Uri或者Bitmap--->開啟系統裁剪框--->獲得裁剪後的圖片的Uri或者Bitmap。1.單純開啟相簿選擇圖片Intent intent = ne

android 通過uri獲取圖片根據限制大小讀取圖片的方法

uri = data.getData();BitmapFactory.Options options =newBitmapFactory.Options(); options.inJustDecodeBounds =true;try{Bitm

網路獲取圖片載入到ImageView

佈局檔案:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:la

Java網路讀取圖片儲存至本地

一、js程式碼: 程式碼如下: /**  * 點選下載當前圖片  *   */ &

跨域獲取圖片自行上傳儲存

跨域獲取圖片並自行上傳儲存 涉及點: 跨域 CORS 協議 為什麼使用cors,不使用jsonp?因為cors更強大,方便安全,還不需要修改大量的前後端資料格式,只需修改伺服器配置引數,與請求引數。 想要跨域獲取資料與資源,必須由對方伺服器開啟

Android下載網路圖片儲存在本地相簿中

package com.thfund.bigtree.StarCounselor.activity; import android.content.Context; import android.content.Intent; import android.grap

Java 網頁指定url獲取圖片壓縮到本地

執行平臺: windows10 JDK版本: 1.8 IDE: eclipse 一. 知識儲備 Java IO流 :   推薦部落格: Java IO詳解   本文用到的IO方法: DataInputStream; BufferedInputStream; FileO

Android下載網路圖片儲存到相簿

下載類,可以url下載到相簿,記得在清單加許可權,6.0程式碼動態加許可權判斷,下載圖片要在子執行緒中下載,下載完後廣播更新相簿 在清單檔案裡面新增許可權: <!--網路--> <uses-permission android:name="android

Android 實現拍照,選擇圖片剪下儲存

專案中有一個實現圖片的剪下功能和APP“酷站”的點選中間“+”字元,進行圖片選擇到最後剪下功能;“微信”選擇圖片並剪下類似 ,由於測試的模擬器中沒有圖片,所以把參考資料上圖片截下來展示下: 查了一些參考資料,使用的而並不是Android系統的圖片剪下方法,而是UCrop庫

Java實現頭像擷取裁剪後圖片儲存,獲取的是base64資料,怎麼轉換為圖片儲存到資料庫。讀取出來。

Java實現頭像拖拽擷取裁剪後圖片儲存,獲取的是base64資料,base64資料轉換為圖片後存入到資料庫。並讀取出來。 1.操作過程效果截圖: 點選編輯頭像進入頭像上傳頁面 頭像上傳頁面 點選選擇圖片,選擇需要上傳的圖片進行拖拽裁剪 裁剪後的

Android本地選擇檔案判斷檔案型別獲取選到檔案大小的方法

最近有一個android選擇本地檔案的並判斷檔案型別的需求 首先要選擇檔案通過點選事件進入到檔案列表 這裡是瀏覽所有的檔案。用到的是startActivityForResult Intent intent = new Intent(Intent.ACTION_GET_CO

android matrix獲取處理過的圖片的實際寬度

很顯然的,這麼做費力不討好。效率不高。。。。。開始我以為這個坑爹的matrix的作者比較腦殘。既然沒有做出直接能拿當前圖片座標的方法。那應該也沒有想過會記錄圖片的變化吧。。可是後來我發現我錯了。。。。寫這段程式的人就是個學數學的購幣。。。。。。

Android拍照和相簿獲取圖片(解決android7.0開啟相機崩潰的問題),同時也解決了拍完照後圖片方向不正的問題

再android7.0中相機操作需要動態申請許可權,在點選開啟相機按鈕時要先判斷許可權,沒有許可權要申請,有許可權再操作,同時在申請許可權的回撥方法中也要判斷是否有許可權,有許可權的話再呼叫開啟相機的方法 package test.img.com.myim

Android呼叫系統圖庫和相機獲取圖片裁剪

最近用到從系統圖庫和相機獲取圖片並裁剪當頭像,根據郭霖大神的第一行程式碼呼叫相機和圖冊,來進行擴充套件和總結。 1、獲取許可權 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORA

JavaScript剪下板中獲取圖片在游標處插入

edit_content_text.addEventListener('paste', function (ev) {    var clipboardData, items, item;    console.log(ev.clipboardData.items[0].type)    if (ev &am

獲取上傳的圖片儲存為縮圖,解決gif背景變黑問題

{                    //所有格式的圖片都可用,不是GIF格式的可以認為是隻有一幀GIF圖片                    image.SelectActiveFrame( ImgFrmDim, i );//選擇圖片第幾幀                    System.IO.