如何将Bitmap转换为字符串而不会丢失质量

时间:2013-05-25 04:46:15

标签: android bitmap

我已将位图图像转换为字符串以保存它:

............
Bitmap photo = extras.getParcelable("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

然后我从字符串中检索位图以设置活动的背景:

byte[] temp = Base64.decode(encodedImage, Base64.DEFAULT);
Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0,
                temp.length, options);
Drawable d = new BitmapDrawable(getResources(), bitmap);
getWindow().setBackgroundDrawable(d);

一切正常但图像质量大幅降低。我知道这是因为photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);因为我在压缩这个图像(尽管压缩分辨率最好)。那么如何在不压缩图像的情况下做到这一点呢?我也尝试了以下代码,但它没有返回任何内容

 .......
Bitmap photo = extras.getParcelable("data");
int bytes = photo.getWidth() * photo.getHeight() * 4;
ByteBuffer buffer = ByteBuffer.allocate(bytes);
photo.copyPixelsToBuffer(buffer);
byte[] b = buffer.array();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

我也使用sharedPreference来保存图片。我还想到了sqliteinternal storage,但在这两种情况下都需要压缩,就像我在互联网上找到的那样

0 个答案:

没有答案