Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
Java 即使没有alpha通道,如何将PNG文件加载为ARGB_8888?_Java_Android_Bitmap_Format_Alpha - Fatal编程技术网

Java 即使没有alpha通道,如何将PNG文件加载为ARGB_8888?

Java 即使没有alpha通道,如何将PNG文件加载为ARGB_8888?,java,android,bitmap,format,alpha,Java,Android,Bitmap,Format,Alpha,我有以下代码来加载png文件: BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inDither = false; map = BitmapFactory.decodeResource(getResources(), mapid, options); 不幸的是,如果图像没有alpha通道,它将以RG

我有以下代码来加载png文件:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = false;
map =  BitmapFactory.decodeResource(getResources(), mapid, options);
不幸的是,如果图像没有alpha通道,它将以RGB_565的形式加载图像。如何防止这种情况发生,并在每次加载时保持不变(无抖动、无转换或任何其他情况)

如果这是不可能的,那么是否有其他方法可以在没有BitmapFactory的情况下将PNG文件加载为ARGB_8888

或者是否有另一种格式可以代替PNG使用,它也支持Alpha通道并始终提供ARGB_8888位图

PS:我正在使用Android 2.3.4。

我有个主意

  • 尝试在没有PreferredConfig的情况下加载PNG位图
  • 获取图像像素
  • 使用所需的首选配置(ARGB_8888)创建新位图
  • 在新位图中设置PNG位图的像素

  • 我认为它应该运行。

    您建议我如何执行步骤1?当我加载图像时,它已经是565格式了。您的建议是将其转换回去,但图像已经更改,信息丢失。如果可以接受,我可以添加一个“.copy(Bitmap.Config.ARGB_8888,true)”。您可以通过下一种方式加载图像
    BitmapFactory.decodeFile(file.getAbsolutePath())
    自动加载图像的默认配置。