如何从ImageView获取Image的字符串值(或Image引用)

时间:2016-02-08 07:03:27

标签: android listview android-imageview

我已经分配了一个textview和一个ImageView,如下所示

Text = (TextView) findViewById(R.id.TextView01);
Image = (ImageView) findViewById(R.id.ImageView01);

现在他们的值会在我的程序中动态变化(图像从在线URL更改),最后我需要将它们的值存储在db中以备将来使用。在这里我得到文本值为

String TextValue = Text.getText().toString();

但我如何从ImageView存储价值?

String ImageValue = Image.someFunctionThatReturnsImageReferenceInString();

有没有这样的功能?
或者如何做到这一点..请帮忙

4 个答案:

答案 0 :(得分:4)

您需要将image-view转换为base64字符串,如下所示。

1]将imageview转换为位图。

  imageView.buildDrawingCache();
  Bitmap bmap = imageView.getDrawingCache();

2]位图到base64字符串。

public String getEncoded64ImageStringFromBitmap(Bitmap bitmap) {
      ByteArrayOutputStream stream = new ByteArrayOutputStream();
      bitmap.compress(CompressFormat.JPEG, 70, stream);
      byte[] byteFormat = stream.toByteArray();
      // get the base 64 string
      String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);
  return imgString;
}

3] base64到位图。

byte[] decodedString = Base64.decode(Base64String.getBytes(), Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

将此位图设置为imageview。

答案 1 :(得分:2)

不幸的是,没有getImageResource()或getDrawableId()。试试这个可能会对你有所帮助。

imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);
imageView1.setTag(R.drawable.apple);
imageView2.setTag(R.drawable.banana);

如果您愿意,可以创建一个简单的函数来获取可绘制的id:

private int getDrawableId(ImageView iv) {
    return (Integer) iv.getTag();
}

答案 2 :(得分:1)

我认为您正在尝试获取从URL中检索到的特定图像的imageName,该图像看起来像这样。 您的图片网址

http://example.com/foo/bar/myImage.png

现在你可以做到

URI uri = new URI("http://example.com/foo/bar/myImage.png
");
String path = uri.getPath();
String imageName = path.substring(path.lastIndexOf('/') + 1);

你可以用imageName

做任何你想做的事

答案 3 :(得分:0)

你可以像这样获得Drawable

Drawable drawable = Image.getDrawable();

或像这样的位图:

Bitmap bitmap = ((BitmapDrawable)Image.getDrawable()).getBitmap();