我使用Base64系统进行编码从图像到字符串此代码
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, stream);
byte[] image = stream.toByteArray();
String img_str = Base64.encodeToString(image, 0);
并解码此代码
byte[] decodedString = Base64.decode(decode, Base64.NO_WRAP);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
imageView.setImageBitmap(decodedByte);
但字符串太长,非常长。我不能用这种方式。我该怎么做短串?,
答案 0 :(得分:1)
你做不到。图像通常包含大量数据。当您将其转换为text64作为base64时,它变得更大(每3个字节4个字符)。所以是的,如果它是一个大图像,通常会很长。
您可以更大程度地压缩图像以减小尺寸,但最终很难将其识别为原始图像 - 即使如此也可能非常大。
减少字节大小的另一种方法是根据像素数创建一个较小的图像 - 例如,将1000x1000图像缩小到100x100 ...这是您的选项吗?
您没有给我们太多的背景信息,但是您可以将数据存储在其他地方,然后只使用网址吗?
答案 1 :(得分:0)
我认为唯一的答案是,如果你想要一个较短的字符串,你应该使用较小的图像
答案 2 :(得分:0)
取决于图像的大小。较大的图像会产生更大的字符串。图像包含大量数据。这就是为什么人们通常只对图标等非常小的图像进行base64编码。
你可以尝试降低JPEG压缩的质量,但我怀疑你会节省多少空间。减小图像的尺寸(如果可能)可能会节省一些空间。无论哪种方式,对任何大于真正小的gif或png图像的东西做base64几乎总是适得其反。