2017-02-25 91 views
0

我還沒有在任何地方找到此問題的答案。如何將位圖圖像轉換爲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

+0

可能重複[如何將位圖轉換爲Uri?](http://stackoverflow.com/questions/8295773/how-can-i-transform-a-bitmap-into-a-uri) –

回答

2

看的人URI是超集URL的,這意味着其文件的路徑。而位圖是由點矩陣組成的數字圖像。位圖表示數據,而uri表示保存數據的位置.SO如果需要獲取位圖的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); 
} 
+0

很好的解釋。我有這個想法,但我知道如何把它推出去。讓我嘗試在一分鐘 – Lucem

+1

真棒,工作。雖然我重構了代碼 – Lucem