如何将图像转换为短串?

时间:2014-03-07 16:44:55

标签: java android string base64 converter

我使用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);

但字符串太长,非常长。我不能用这种方式。我该怎么做短串?,

3 个答案:

答案 0 :(得分:1)

你做不到。图像通常包含大量数据。当您将其转换为text64作为base64时,它变得更大(每3个字节4个字符)。所以是的,如果它是一个大图像,通常会很长。

您可以更大程度地压缩图像以减小尺寸,但最终很难将其识别为原始图像 - 即使如此也可能非常大。

减少字节大小的另一种方法是根据像素数创建一个较小的图像 - 例如,将1000x1000图像缩小到100x100 ...这是您的选项吗?

您没有给我们太多的背景信息,但是您可以将数据存储在其他地方,然后只使用网址吗?

答案 1 :(得分:0)

我认为唯一的答案是,如果你想要一个较短的字符串,你应该使用较小的图像

答案 2 :(得分:0)

取决于图像的大小。较大的图像会产生更大的字符串。图像包含大量数据。这就是为什么人们通常只对图标等非常小的图像进行base64编码。

可以尝试降低JPEG压缩的质量,但我怀疑你会节省多少空间。减小图像的尺寸(如果可能)可能会节省一些空间。无论哪种方式,对任何大于真正小的gif或png图像的东西做base64几乎总是适得其反。