顾名思义,我试图让我的Android应用程序的用户从他的设备中选择一张图片(完成),然后我想缩小图片(完成),将图片压缩/转换为png并将其发送API作为base64字符串。
所以我目前调整图像的大小是这样的:
options.inSampleSize = calculateInSampleSize(options, MAX_IMAGE_DIMENSION, MAX_IMAGE_DIMENSION);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
然后,我有一个位图,要转换为PNG,然后从那里转换为base64。我找到了一些示例代码来转换为PNG并将其存储在此处的设备上。
try {
FileOutputStream out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
问题是我不想保存图像。我只想将其作为PNG保留在内存中,然后将其进一步转换为base64字符串。
有谁知道我如何将图像转换为png并以这种方式存储在变量中,甚至更好地将其立即转换为base64?欢迎所有提示!
尝试将位图转换为png:
bitmap.compress(Bitmap.CompressFormat.PNG, quality, outStream);
检查方法的文档。
您可以直接将位图转换为Base64。使用它进行Base64的编码和解码。
public static String encodeToBase64(Bitmap image)
{
Bitmap immagex=image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
Log.e("LOOK", imageEncoded);
return imageEncoded;
}
public static Bitmap decodeBase64(String input)
{
byte[] decodedByte = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句