1. 程式人生 > >根據Url非同步下載圖片,並將圖片儲存到本地

根據Url非同步下載圖片,並將圖片儲存到本地

public class AsynDownLoagPic extends AsyncTask<String, Void, Bitmap> {
    URL url = null;
Context mContext;
    public AsynDownLoagPic(Context context) {
        mContext = context;
}

    @Override
protected void onPreExecute() {
        super.onPreExecute();
}

    @Override
protected Bitmap doInBackground
(String... params) { //根據url路徑,將圖片儲存到本地 InputStream inputStream = null; HttpURLConnection urlConnection = null; Bitmap bmp = null; try { url = new URL(params[0]); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(10000
); inputStream = urlConnection.getInputStream(); byte[] bt = getBytesFromStream(inputStream); LogUtils.e("bitmapCahche--->轉換成bitmap物件------"); bmp = BitmapFactory.decodeByteArray(bt, 0, bt.length); } catch (MalformedURLException e) { e.printStackTrace(); return null;
} catch (IOException e) { e.printStackTrace(); return null; } finally { if (null != inputStream) { try { inputStream.close(); inputStream = null; } catch (IOException e) { e.printStackTrace(); } } if (null != urlConnection) { urlConnection.disconnect(); urlConnection = null; } } return bmp; } @Override protected void onPostExecute(Bitmap bitmap) { //將圖片儲存到本地 // saveMyBitmap((url.toString()), bitmap); saveImageToGallery(mContext,bitmap); }

//根據位元組流儲存圖片

private byte[] getBytesFromStream(InputStream inputStream) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] buf = new byte[1024 * 10];
    int len = 0;
    while (len != -1) {
        try {
            len = inputStream.read(buf);
            if (len != -1) {
                baos.write(buf, 0, len);
//    baos.flush();
              //  LogUtils.e("bitmapCahche*-*-*-正在寫入圖片------" + buf.length);
}
        } catch (IOException e) {
            e.printStackTrace();
LogUtils.e("bitmapCahche*-*-*-寫入出錯------" + e.toString());
len = -1;
}
    }
    if (inputStream != null) {
        try {
            inputStream.close();
} catch (IOException e) {
            e.printStackTrace();
}
    }
    LogUtils.e("bitmapCahche*-*-*-圖片寫入完畢------");
    return baos.toByteArray();
}

//將圖片儲存到本地相簿

  public void saveImageToGallery(Context context, Bitmap bmp) {
        File appDir = new File("/mnt/sdcard/Diction", "");
        if (!appDir.exists()) {
            appDir.mkdir();
}
        String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
//            toast("儲存成功");
ToastUtils.showShort(mContext,"儲存成功。");
} catch (FileNotFoundException e) {
//            toast("儲存失敗");
ToastUtils.showShort(mContext,"儲存失敗。");
e.printStackTrace();
} catch (IOException e) {
//            toast("儲存失敗");
ToastUtils.showShort(mContext,"儲存失敗。");
e.printStackTrace();
}

        try {
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
            e.printStackTrace();
}

        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
}

相關推薦

根據Url非同步下載圖片圖片儲存本地

public class AsynDownLoagPic extends AsyncTask<String, Void, Bitmap> { URL url = null; Cont

python 爬蟲之requests爬取頁面圖片url圖片下載本地

大家好我叫hardy   需求:爬取某個頁面,並把該頁面的圖片下載到本地   思考:   img標籤一個有多少種類型的src值?三種:1、以http開頭的網路連結。2、以“/”開頭絕對路徑。3、以“./”開頭相對路徑。當然還有其他型

ThinkPHP框架整合Ueditor編輯器圖片上傳到阿里雲OSS

網上有很多介面美觀整潔的編輯器外掛,但是相比較功能而言,還是百度的ueditor更為豐富,所以我選擇了在專案中使用這款編輯器,下面介紹操作步驟,程式碼不多,自己動手,豐衣足食。 一、在專案中整合Ueditor外掛: 首先,去官網下載對應版本的壓縮包,因為用的是thinkP

SSM框架---上傳多張圖片到專案資料夾內圖片的路徑存到資料庫

資料庫:所存的圖片路徑可以為空,不確定要上傳幾張圖片,圖片id自增 spring配置檔案裡配置檔案上傳解析器  <bean id="multipartResolver" class="org.springframework.web.multipart.commons

csdn的文章爬取圖片儲存本地

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/11/13 10:20 # @Author : jia.zhao # @Desc : # @File : csdn_demo.py

Photoshop CS6多張圖片合成GIF動態圖或視訊儲存匯出

(0)從Mini Bridge中拖入多張圖片(製作原材料),形成多個圖層。 (1)從“視窗”中開啟“時間軸” 從“時間軸”的選項中“從圖層建立幀”,並設定各幀的延遲時間。可點選播放進行預覽。 (2)儲存為GIF格式檔案。 從“檔案”選擇“儲存為Web所用格式”,命名並“儲存”即可

使用OpenCV2批量裁剪圖片裁剪後的圖片儲存至指定資料夾

       在做影象復原的相關工作中,由於資料集的缺失,我們通常需要將圖片裁剪成比較小的crop。比如在做深度學習影象去噪的相關研究的時候,由於影象去噪不太關注整體的影象內容,所以可以先將大的圖片裁剪成小的crop,以次來增加資料量。       具體程式碼如下:

Webview載入String圖片縮放顯示

現在從伺服器傳回來的富文字不用textview顯示了,改用webview顯示,但是不想將傳回來的字串存成html網頁,再用webview讀取html網頁。 經查詢,可以這麼辦: private vo

java呼叫Linux執行Python爬蟲資料儲存到elasticsearch--(一、環境指令碼搭建)

java呼叫Linux執行Python爬蟲,並將資料儲存到elasticsearch中 一、以下部落格程式碼使用的開發工具及環境如下: 1、idea: 2、jdk:1.8 3、elasticsearch:5.2.0 4、Linux 5、Python 6、maven 二、maven座標: <!--jav

Js動態追加行內容儲存到資料庫取出資料通過js動態顯示

實現步驟講解: 首先需要在html頁面建立一個table表格和一個動態新增行的按鈕 <input type="button" onclick="addT()" value="新增" /> 然後實現表格中追加行的js方法 //新增動態行(可在實現的列中新增相應的滑鼠事

spring boot 實現 前段上傳圖片後臺圖片轉存的前臺伺服器(FTPClient)

最近做一個增加產品的介面,需要上傳圖片到前臺路徑下就通過前臺FTPClient實現後臺將檔案轉存到前臺伺服器路徑下, public String hostname = "hxxxxxxxxxxx"; //ftp伺服器埠號預設為21 public Integer port

canvas畫布儲存圖片avaScript圖片轉畫布用JavaScript畫布保持成圖片格式上傳阿里雲

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style>

iview 表格插入圖片獲取圖片對應資料

 首先通過attr為標籤新增屬性,屬性值為對應圖片下標index; 然後在on裡邊通過e.target點選事件獲取點中的標籤,然後獲取屬性uid對的值,傳參 { title: '一審修改', key: 'onesh

向QWidget中新增圖片使圖片隨窗體大小縮放

向QWidget中新增圖片有多種方式,其中一種方法如下: // 部分核心程式碼片段 在Qt 5.7中編譯通過 QWidget * widget = new QWidget; widget->setAtuoFillBackground(true); Q

下載檔案彈出儲存提示框選擇位置絕對路徑 or相對路徑

1.因為Aiax不能返回流 所以用js表單提交發送請求 var form = document.createElement("form");document.body.appendChild(form);var nameInput = document.createEle

計算1到100的平方根結果儲存到二進位制檔案root.dat中

小程式示例: int main() { double a[100]; int i; FILE *fp; for (i = 0; i < 100;i++) { a[i] = sqrt(i+1);

python爬取大眾點評網商家資訊以及評價資料儲存到excel表中(原始碼及註釋)

import requests from bs4 import BeautifulSoup import traceback # 異常處理 import xlwt # 寫入xls表 # Cookie記錄登入資訊,session請求 def get_content(url,he

java利用POI向Excel(xls)寫入圖片圖片引用超連結

1.maven依賴 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.

Android中開啟系統相機連續拍多張圖片得到圖片地址

1、開啟系統相機: Intent intent = new Intent(); intent.putExtra("return-data"

FLASH 呼叫攝像頭 JS中方法觸發拍照照片儲存本地資料夾

使用 FLASH CS4 開發 有些方法和實現過程是在網上趴的,經過自己的修改,為自己所用。 建一個檔案,不用新增任何控制元件,直接F9 輸入如下程式碼: import com.adobe.images.JPGEncoder; import com.adobe.images