2012-06-04 123 views
1

我已经在图像视图中设置了图像。现在我想保存这个状态,并且需要知道该图像的图像路径。有没有办法做到这一点?是否可以在图像视图中获取图像的图像路径?

UPDATE:

// Decode, scale and set the image. 
      Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath); 
      Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, NEW_WIDTH, NEW_HEIGHT, true); 
      myBitmap.recycle(); 
      myBitmap = null; 

      mImageView.setImageBitmap(scaledBitmap); 
+0

为什么你需要一个图像路径,当你已经有了selectedImagePath?你的意思是为了获得缩放位图的路径吗?恕我直言,缩放位图存储在内存中,你不能得到它的路径(除非你坚持下去).. p.s.检查这是否你想坚持位图http://stackoverflow.com/questions/649154/android-bitmap-save-to-location – sinek

+0

,我怎样才能得到缩放图像的路径? – user1420042

+0

你不能,你只能得到它的参考。另一方面,如果真的需要的话,你可以使用该引用并将映像刷新到磁盘以备后用(尽管我仍不明白为什么你需要使用路径而不是图像引用?)。 – sinek

回答

3

不是直接的,一旦图像设置上ImageView它变成了Drawable和一切被遗忘。但是,您可以使用标签来达到此目的。任何视图都可以有一个与之关联的标签,代表一些关于该视图的元数据。你可以这样做:

ImageView iv; //Declared elsewhere 
Uri imagePath = Uri.parse("..."); 
//Set the image itself 
iv.setImageURI(imagePath); 
//Add the path value as a tag 
iv.setTag(imagePath); 


//Sometime in the future, retrieve it 
Uri path = (Uri)iv.getTag(); 

你也可以考虑创造ImageView一个子类来封装这些额外的功能,使您的代码变得更容易阅读和维护。

HTH

+0

这对我的代码看起来如何?什么时候设置标签?查看更新。 – user1420042

+0

在最后一行(即'setImageBitmap()'后面)添加'mImageView.setTag(selectedImagePath)'行。然后,根据路径是什么对象类型(String,Uri等),您可能需要修改检索示例中的强制转换。 – Devunwired