我已经分配了一个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();
有没有这样的功能?
或者如何做到这一点..请帮忙
答案 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();