Java 将版面转换为图像,如何获得良好的质量?

Java 将版面转换为图像,如何获得良好的质量?,java,android,image-capture,image-compression,Java,Android,Image Capture,Image Compression,我在Android活动中有一个布局,我将其转换为图像,然后在不同的社交网络上共享。 问题是质量一点也不好,图像上有瑕疵,质量取决于屏幕的大小 有什么办法提高质量吗?我不能将完整的布局图像作为静态图像存储在应用程序目录中,我需要在运行时生成它 下面是我用来将布局转换为PNG的代码 Bitmap bitmap = null; try { bitmap = Bitmap.createBitmap(dashboardView.getWidth(),

我在Android活动中有一个布局,我将其转换为图像,然后在不同的社交网络上共享。 问题是质量一点也不好,图像上有瑕疵,质量取决于屏幕的大小

有什么办法提高质量吗?我不能将完整的布局图像作为静态图像存储在应用程序目录中,我需要在运行时生成它

下面是我用来将布局转换为PNG的代码

Bitmap bitmap = null;   
        try {
            bitmap = Bitmap.createBitmap(dashboardView.getWidth(),
                    dashboardView.getHeight(), Bitmap.Config.ARGB_4444);
            dashboardView.draw(new Canvas(bitmap));
        } catch (Exception e) {
            // Logger.e(e.toString());
        }

        FileOutputStream fileOutputStream = null;
        File path = Environment
                .getExternalStorageDirectory();
        File file = new File(path, "wayzupDashboard" + ".png");
        try {
            fileOutputStream = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
        bitmap.compress(CompressFormat.PNG, 100, bos);
        try {
            bos.flush();
            bos.close();
            fileOutputStream.flush();
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

编辑:我的错,我离开了ARGB_4444,事实是我在发布问题之前做了很多测试,所以我只是忘了把ARGB_8888放进去。但在屏幕很小的安卓手机上,图像质量仍然很差。如果我能告诉你,在捕获布局时总是使用HDPI drawable就好了

您使用的是
Bitmap.Config.ARGB_4444
。我建议你使用ARGB_8888,就像谷歌一样

ARGB_4444
此字段在API级别被弃用。因为 此配置质量较差,建议使用
ARGB_8888
相反


ARGB_4444表示每个通道只有4位(质量非常差)


使用ARGB_888。

是的,谢谢,我尝试了很多不同的配置,我只是在写回ARGB_888之前粘贴了代码。但小屏幕的质量仍然很差。我能告诉Android在捕获时使用HDPI Resources文件夹吗?不,不可能在一段时间内更改使用过的drawable文件夹,然后返回到以前使用过的文件夹。