从位图更改位深度

时间:2013-05-18 19:29:21

标签: java android sqlite bitmap

所以我有一个32位深度的图像,但是当我把它变成我的SQLite数据库的blob,然后用下面的代码重新读出它只有24位深度(质量更低,我希望它是相同的质量)。如何将其设为32位深度? :

DatabaseHandler db = new DatabaseHandler(camera.this);
            List<Database> contacts = db.getAllContacts();
            for (Database contact : contacts) {
                    BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
                    bmpFactoryOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
                    //bmpFactoryOptions.inScaled = false;
                    bmpFactoryOptions.outHeight = 240;
                    bmpFactoryOptions.outWidth = 320;
                    // decodes the blob back into a bitmap
                    byte[] blob = contact.getMP();
                    ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                    Bitmap scalen = Bitmap.createScaledBitmap(bitmap, 320, 240, false);

编码源是

Bitmap image15 = BitmapFactory.decodeResource(getResources(),R.drawable.wolverineklein);

            // convert bitmap to byte
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            image15.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte imageInByte1[] = stream.toByteArray();

Left are the properties of the input image (32 bit depth) and right is the output image (24 bit depth)

1 个答案:

答案 0 :(得分:3)

在Android上没有24位深度的东西。位图可以是8位(仅ALPHA 8格式半透明或调色板格式为空配置),16位(565 RGB格式,不带半透明或4444 RGBA格式,半透明)或32位(8888 RGBA格式,半透明。)

更新:这只是意味着您没有Alpha通道。在两种情况下,颜色都使用24位进行编码。