Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将PNG图像转换为Base64_Android_Bitmap_Base64 - Fatal编程技术网

Android 将PNG图像转换为Base64

Android 将PNG图像转换为Base64,android,bitmap,base64,Android,Bitmap,Base64,我正在将可绘制资源png图像转换为位图,然后将该位图转换为base64,并通过web服务将其发送到服务器 图像存储在服务器上的某个地址,作为响应,我得到了存储图像的URL 问题是在将图像发送到服务器后,我使用该url获取的url将图像设置为其他imageview,但图像的透明部分变为黑色, 我认为问题在于将png图像转换为base64 我的代码: Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_

我正在将可绘制资源png图像转换为位图,然后将该位图转换为base64,并通过web服务将其发送到服务器

图像存储在服务器上的某个地址,作为响应,我得到了存储图像的URL

问题是在将图像发送到服务器后,我使用该url获取的url将图像设置为其他imageview,但图像的透明部分变为黑色, 我认为问题在于将png图像转换为base64

我的代码:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false);
mImageView.setImageBitmap(bitmap);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, bao);
byte[] ba = bao.toByteArray();
base64Image = Base64.encodeToString(ba, Base64.DEFAULT);

请尽快给我解决方案,你所做的一切似乎都是对的。根据编译时使用的Android版本,
decodeResource
可以有不同的默认行为。使用以下代码进行解码时,可以强制位图工厂使用alpha通道

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = false;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher, options);

问题可能在于如何解码位图。您需要添加选项来维护alpha通道。@dcharms:您可以给我一个示例,当您从Base64下载和解码图像时,您可以发布代码吗?如果我知道你现在是如何尝试的,那么举个例子就容易多了。它存储在服务器上,我只从url获取url(例如www.test.com/demo.png),我正在使用通用图像加载程序下载图像,你如何在服务器上解码它?谢谢你的帮助,但这对我也不起作用,您还有其他解决方案吗?如果您在浏览器中查看服务器映像,它是黑色的吗?这意味着它已正确上载,而不是Base64。发布你的下载代码。我正在使用你需要发布的实际代码,如果我有任何机会帮助你。文档中说默认情况下支持alpha,但您可能无意中在应用的选项中禁用了它。