在ImageView中以int array []的形式显示图像

时间:2017-04-05 23:24:05

标签: android arrays android-imageview

如何在int [] format中显示图像,例如:

int[] UM = {1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1};

这是我的代码:

public class MainActivity extends Activity {

    private ImageView imageTeste;
    private Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        int[] UM = {1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1};
        bitmap = Bitmap.createBitmap(UM, 5, 9, Bitmap.Config.RGB_565);
        imageTeste = (ImageView) findViewById(R.id.imageId);
        imageTeste.setImageBitmap(bitmap);
    }
}

但它不会显示任何内容,只有将Bitmap.Config.ARGB_8888参数更改为RGB_565,但这样做时,白色像素(1)变为黑色。即使将值(1)转换为255也不起作用,它们将显示为蓝色。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您使用的方法是:Bitmap createBitmap (int[] colors, int width, int height, Bitmap.Config config)。请查看此方法here的文档。您提供方法的int[]必须是Color ints数组。这些不是常规整数,对这些值使用0或1是使图像显示为空的原因。

查看关于Color here的Android文档。

例如,不透明蓝色为0xff0000ff。颜色整数有4个组件打包在一个32位整数值。 4个组件分别代表Alpha,Red,Green和Blue。在示例中,A组件是FF,意味着颜色是完全不透明的。 R组件00,没有红色。 G分量为00,没有绿色。 B组件为FF,全为蓝色。

您只需要为createBitmap()方法提供有效的int[]即可解决问题。