0

Androidでバーコードを表示したいです。入力として、SVG 文字列を取得します。SVG ライブラリとしてAndroidSVGを使用します。図書館のウェブサイトのサンプルコードを使用しましたが、すべて問題ないようです。しかし、画像をズームすると、エッジが歪んでしまいます (アンチエイリアス?)。すべてのフラグを無効にしようとしました。しかし、画像にはまだぼやけたエッジがあります。コードの何が問題になる可能性がありますか?

写真: 最大にズームしてみてください。ぼやけたエッジが表示されます。 ここに画像の説明を入力

コード:

private void loadQRCode(String svgString) {
    SVG svg = null;
    try {
        svg = SVG.getFromString(svgString);
    } catch (SVGParseException e) {
        e.printStackTrace();
    }

    if (svg.getDocumentWidth() != -1) {
        int widthPx = Utils.pxFromDp(400);
        int heightDp = Utils.pxFromDp(300);

        svg.setDocumentWidth(widthPx);
        svg.setDocumentHeight(heightDp);

        int width = (int) Math.ceil(svg.getDocumentWidth());
        int height = (int) Math.ceil(svg.getDocumentHeight());
        Bitmap newBM = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

        Canvas bmcanvas = new Canvas(newBM);
        final DrawFilter filter = new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG| Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG, 0);
        bmcanvas.setDrawFilter(filter);

        barcode.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
        bmcanvas.drawRGB(255, 255, 255);

        svg.renderToCanvas(bmcanvas);
        barcode.setImageBitmap(newBM);
    }
}
4

1 に答える 1