Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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 从位图更改位深度_Java_Android_Sqlite_Bitmap - Fatal编程技术网

Java 从位图更改位深度

Java 从位图更改位深度,java,android,sqlite,bitmap,Java,Android,Sqlite,Bitmap,因此,我有一个32位深度的图像,但当我将它制作成SQLite数据库的blob,并使用以下代码再次读取它时,它只有24位深度(质量较低,我希望它具有相同的质量)。如何将其设置为32位深度 DatabaseHandler db = new DatabaseHandler(camera.this); List<Database> contacts = db.getAllContacts(); for (Database contact : c

因此,我有一个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);

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


更新:这只是意味着你没有阿尔法通道。在这两种情况下,颜色都使用24位编码。

您确定要将其保存为32位吗?1。您有BitmapFactory.Options,但尚未使用它。2.给我们看一下编码源。我用数据库中的图像编码更新了我的问题,但你说我不使用它是什么意思?我知道它似乎不起作用,但不知道为什么。没有头发我不确定是否正确地将它们保存为32位。我如何在代码中使用bitmapFactory选项?如果您在较旧版本的平台上测试代码,默认情况下JPEG将以565格式解码(16位)。由于未将BitmapFactory.Options传递给解码方法,因此它将保持16位格式。新版本的Android总是默认在8888解码。我上传了这张图片,你可以看到左边的(输入)是32位,右边的是24位(我使用上面的代码后得到的),这只是意味着你没有alpha通道。在这两种情况下,颜色都是用24位编码的。啊,好的,你知道怎么把它设为32位吗?因为输出的图像质量也较低。如果没有半透明像素,就没有理由将其设置为32位。32位格式是RGB(颜色)的24位+alpha(半透明)的8位。如果要保持质量,请使用PNG格式而不是JPEG对图像进行编码。
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();