短視訊帶貨原始碼,儲存圖片到相簿/相簿

zhibo系統開發發表於2022-06-22

短視訊帶貨原始碼,儲存圖片到相簿/相簿

一、描述

APP需要實現使用者手動將圖片儲存到手機相簿/相簿

注:Android11 測試有效


二、實現

直接呼叫下面的方法即可 

  /*
     * 將圖片 bitmap儲存到相簿
     */
    public static void saveBitmap(Context activity,Bitmap bitmap) {
        //因為xml用的是背景,所以這裡也是獲得背景
//獲取引數Bitmap方式一: Bitmap bitmap=((BitmapDrawable)(imageView.getBackground())).getBitmap();
//獲取引數Bitmap方式二: Bitmap image = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
 
        //t設定圖片名稱,要儲存png,這裡字尾就是png,要儲存jpg,字尾就用jpg
        String imageName = System.currentTimeMillis() + "code.png";
 
        //建立檔案,安卓低版本的方式
       //  File file=new File(Environment.getExternalStorageDirectory() +"/test.png");
 
        //Android Q  10為每個應用程式提供了一個獨立的在外部儲存裝置的儲存沙箱,沒有其他應用可以直接訪問您應用的沙盒檔案
        File f = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File file = new File(f.getPath() + "/"+imageName);//建立檔案
      //        file.getParentFile().mkdirs();
        try {
            //檔案輸出流
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            //壓縮圖片,如果要儲存png,就用Bitmap.CompressFormat.PNG,要儲存jpg就用Bitmap.CompressFormat.JPEG,質量是100%,表示不壓縮
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
            //寫入,這裡會卡頓,因為圖片較大
            fileOutputStream.flush();
            //記得要關閉寫入流
            fileOutputStream.close();
            //成功的提示,寫入成功後,請在對應目錄中找儲存的圖片
            Log.e("寫入成功!位置目錄", f.getPath() + "/"+imageName);
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            //失敗的提示,這裡的Toast工具類,大家用自己專案中的即可,若不需要可以刪除
            ToastUtil.showToast(e.getMessage());
 
        } catch (IOException e) {
            e.printStackTrace();
            //失敗的提示
            ToastUtil.showToast(e.getMessage());
        }
 
        // 下面的步驟必須有,不然在相簿裡找不到圖片,若不需要讓使用者知道你儲存了圖片,可以不寫下面的程式碼。
        // 把檔案插入到系統相簿
        try {
            MediaStore.Images.Media.insertImage(activity.getContentResolver(),
                    file.getAbsolutePath(), imageName, null);
            ToastUtil.showToast( "儲存成功,請您到 相簿/相簿 中檢視");
        } catch (FileNotFoundException e) {
            ToastUtil.showToast( "儲存失敗");
            e.printStackTrace();
        }
        // 最後通知相簿更新
        activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                Uri.fromFile(new File(file.getPath()))));
 
    }


Note:不會獲取圖片Bitmap 引數的同學可以參考以下方式:

(下面的imageView是你的佈局檔案中的ImageView的id)

1)方式一:如果你的圖片來自於網路,該 url 以圖片的形式已經顯示在app上了,此時需要儲存這張圖片時,將圖片轉換成Bitmap

Bitmap image = ((BitmapDrawable)imageView.getDrawable()).getBitmap();


2)方式二:如果你的圖片是app本地的圖片,需要儲存這張圖片時,將圖片轉換成Bitmap

若ImageView的屬性設定了 android:background="@drawable/qr_code",使用下面的方式

Bitmap bitmap=((BitmapDrawable)(imageView.getBackground())).getBitmap();


若ImageView的屬性設定了 android:src="@drawable/qr_code",使用下面的方式

 Bitmap image = ((BitmapDrawable)imageView.getDrawable()).getBitmap();


以上就是短視訊帶貨原始碼,儲存圖片到相簿/相簿, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2902159/,如需轉載,請註明出處,否則將追究法律責任。

相關文章