文字テキストを画像に変換する方法。画像サイズの変更。

文字をそのまま拡大縮小していたら、それら1文字1文字がキャッシュに入ってメモリーの消費量が上がっているようだったので、文字テキストを画像にして大きさを変えるという方法で解決することができた。文字テキストを画像に変換する方法を紹介する。

文字テキストの形式指定

w_paint = new Paint();
w_paint.setAntiAlias(true);
w_paint.setColor(Color.BLACK);
w_paint.setTextSize(300);
String txt = 画像にする文字;

文字テキストの長方形サイズを取得

w_paint.getTextBounds(txt, 0, txt.length(), new Rect());

文字テキストの幅と高さを取得。

FontMetrics fm = w_paint.getFontMetrics();//フォントマトリックス
int mtw = (int) w_paint.measureText(txt);//幅
int fmHeight = (int) (Math.abs(fm.top) + fm.bottom);//高さ

bitmap作成。 new Canvas(bmp)で文字テキストを書けるようにする。マージンも少し指定している。

bmp = Bitmap.createBitmap(mtw + 1 * 2, fmHeight + 1 * 2, Bitmap.Config.ARGB_8888);
Canvas cv = new Canvas(bmp);
cv.drawText(txt, 1, Math.abs(fm.ascent) + 1, w_paint);

作成したbitmapの幅と高さを取得

int w = bmp.getWidth();
int h = bmp.getHeight();

元のサイズの長方形と大きさを変えた長方形を作成して、canvas.drawBitmap()にそれらを指定することで画像サイズを変更することができる。

// 描画元の矩形イメージ
Rect src = new Rect(0, 0, w, h);
// 描画先の矩形イメージ
Rect dst = new Rect(左上x座標, 左上y座標, 右下x座標, 右下y座標);
canvas.drawBitmap(bmp, src, dst, null);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です