0

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を残しました。実際、SOに質問を投稿する前に多くのテストを行ったのですが、ARGB_8888を入れるのを忘れていました。それでも、小さな画面のAndroid携帯では画質が悪い. レイアウトのキャプチャ中に常に HDPI drawable を使用するように指示できれば。

4

2 に答える 2

1

ARGB_4444 は、チャネルごとに 4 ビットしかないことを意味します (非常に品質が悪い)。

ARGB_8888 を使用します。

于 2013-01-10T10:22:06.647 に答える
0

を使用してBitmap.Config.ARGB_4444います。Googleが教えてくれるように、ARGB_8888を使用することをお勧めします

ARGB_4444このフィールドは API レベルで廃止されました。この構成は質が悪いため、ARGB_8888 代わりに使用することをお勧めします。

于 2013-01-10T10:21:17.960 に答える