我已经使用这个(下面的)代码从 SD 卡上的图片创建了一个 base64 字符串,它可以工作,但是当我尝试解码它时(甚至在下面)我得到一个java.lang.outOfMemoryException
,大概是因为我没有将字符串拆分成合理的在我解码之前的大小,就像我在编码之前一样。
byte fileContent[] = new byte[3000];
StringBuilder b = new StringBuilder();
try{
FileInputStream fin = new FileInputStream(sel);
while(fin.read(fileContent) >= 0) {
b.append(Base64.encodeToString(fileContent, Base64.DEFAULT));
}
}catch(IOException e){
}
上面的代码运行良好,但是当我尝试使用以下代码解码图像时出现问题;
byte[] imageAsBytes = Base64.decode(img.getBytes(), Base64.DEFAULT);
ImageView image = (ImageView)this.findViewById(R.id.ImageView);
image.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
这种方法我也试过
byte[] b = Base64.decode(img, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
image.setImageBitmap(bitmap);
现在我假设我需要将字符串拆分为像我的图像编码代码这样的部分,但我不知道如何去做。