簡體   English   中英

如何將位圖圖像轉換為Uri

[英]How To Convert A Bitmap Image To Uri

我沒有在任何地方找到這個問題的答案。

位圖圖像在應用程序中處理,這意味着沒有文件路徑來獲取圖像。

下面是如何將Uri轉換為位圖

 if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
        Uri selectedImageUri = data.getData();

        imageview.setImageURI(selectedImageUri);

        try {
            bitmap1 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(this, "" + e, Toast.LENGTH_SHORT).show();
        }

        bitmap1.compress(Bitmap.CompressFormat.JPEG, 7, bytearrayoutputstream);

        BYTE = bytearrayoutputstream.toByteArray();

        bitmap2 = BitmapFactory.decodeByteArray(BYTE, 0, BYTE.length);

        imagetoo.setImageBitmap(bitmap2);
    }

我現在如何重新轉換為Uri

URI是一組超級URL,表示它是文件的路徑。 而Bitmap是由點矩陣組成的數字圖像.Bitmap表示數據,uri表示保存數據的位置。如果需要獲取位圖的URI,則只需將其保存在存儲上即可。 在android中你可以通過Java IO來完成它,如下所示:首先創建一個你想要保存它的文件:

public File createImageFile() {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File mFileTemp = null;
    String root=activity.getDir("my_sub_dir",Context.MODE_PRIVATE).getAbsolutePath();
    File myDir = new File(root + "/Img");
    if(!myDir.exists()){
        myDir.mkdirs();
    }
    try {
        mFileTemp=File.createTempFile(imageFileName,".jpg",myDir.getAbsoluteFile());
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    return mFileTemp;
}

然后沖洗它,你會得到URi

 File file = createImageFile(context);
 if (file != null) {
    FileOutputStream fout;
    try {
        fout = new FileOutputStream(file);
        currentImage.compress(Bitmap.CompressFormat.PNG, 70, fout);
        fout.flush();
    } catch (Exception e) {
        e.printStackTrace();
    }
    Uri uri=Uri.fromFile(file);
}

這只是一個例子,不是所有Android版本的空閑代碼。 要在Android N上面和上面使用Uri ,你應該使用FileProvider來提供文件。 按照Commonsware的回答。

Bitmap使用compress()Bitmap寫入文件。 然后,很可能使用FileProvider來提供該文件,其中getUriForFile()為您提供與該文件對應的Uri

IOW,你不要將位圖“轉換”為Uri 你將位圖保存在一個給你一個Uri地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM