我有这个问题。我使用decodeByteArray解码和解密数据作为图像,然后我试图获得该图像的实际大小(以字节为单位,而不是宽度和高度)并在textview中显示。
Bitmap bitmap = BitmapFactory.decodeByteArray(decryptedData , 0, decryptedData .length); //decoding bytearrayoutputstream to bitmap
int i = bitmap.getRowBytes() * bitmap.getHeight() ;
TextView txt = (TextView) findViewById(R.id.text);
txt.setText(i);
代码运行时没有任何错误,但TextView.Any建议中没有显示大小?
答案 0 :(得分:1)
TextView.setText(int resId)
不应该像这样使用。 i
应该是R.string.my_string_here
等资源ID。
你真正想要的是
txt.setText(String.valueOf(i));
答案 1 :(得分:1)
请尝试相反并告诉我结果
Bitmap bitmap = BitmapFactory.decodeByteArray(decryptedData , 0, decryptedData .length);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
TextView txt = (TextView) findViewById(R.id.text);
txt.setText(String.valueOf(stream.size()));
答案 2 :(得分:0)
试试这个
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
BitmapFactory.Options bounds = new BitmapFactory.Options();
BitmapFactory.decodeByteArray(byteArray , 0, byteArray .length);
int width = bounds.outWidth;
int height = bounds.outHeight;
答案 3 :(得分:0)
在这一行:
int i = bitmap.getRowBytes() * bitmap.getHeight() ;
你应该使用getWidth()而不是GetRowBytes(),因为getRowBytes()返回位图像素中行之间的字节数,getWidth()返回图像的宽度。