0

次のことを行う必要がある Android プログラムがあります。

次の内容の HTML 文字列があります。

<img src="image.png" />

ここで指定されているように、このタグを変更する必要があります。base64 でエンコードされた画像データを -tag に直接埋め込みます。

私は著者の言うことを達成することができます。画像を Base64 に変換できます。

ここでの私の質問は、html 文字列を持っていることです。文字列を解析し、画像の src 値を読み取り、画像データを byte[] に変換し、エンコードして html 文字列を再変更し、webview 内にロードする必要があります。すなわち; 最後に、HTML コンテンツには次の行が含まれます。

<img src=\"data:image/jpeg;base64," + image64 + "\" />

HTML 文字列の読み取りと変更に使用できる Java テクニックは何ですか? 利用可能なライブラリを使用するのではなく、純粋な Java で行う必要があります。元の HTML ファイルは事前定義されているため、新しい HTML を作成することはできませんが、既存の HTML ファイルを変更する必要があります。Html.fromHtml を使用して getDrawable() をオーバーライドしようとしましたが、これをさらに進めて html 文字列を変更する方法がわかりません。

4

1 に答える 1

0

次のような Pattern および Matcher オブジェクトと正規表現を使用する必要があります。

public String renderHtml(String body) {
        Pattern pattern = Pattern.compile("[<](/)?img[^>]*[>]");
        Matcher matcher = pattern.matcher(body);
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (matcher.find()) {
            String replacement = getReplacement(matcher.group(0));
            builder.append(body.substring(i, matcher.start()));
            if (replacement == null)
                builder.append(matcher.group(0));
            else
                builder.append(replacement);
            i = matcher.end();
        }
        builder.append(body.substring(i, body.length()));
        return builder.toString();
    }
于 2013-09-12T14:18:01.460 に答える