私の質問が少し変わった。ビットマップが正しく保存されない(Androidのキャンバスから)
EDIT:
// make textures from text
public static void createTextureFromText(GL10 gl, String text, String texName) {
Paint p = new Paint();
p.setColor(Color.GREEN);
p.setTextSize(32 * getResources().getDisplayMetrics().density);
// get width and height the text takes (in px)
int width = (int) p.measureText(text);
int height = (int) p.descent();
// Create an empty, mutable bitmap based on textsize
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
// get a canvas to paint over the bitmap
Canvas canvas = new Canvas(bmp);
bmp.eraseColor(Color.CYAN); //Cyan for debugging purposes
//draw the text
canvas.drawText(text, 0, 0, p);
// save image - for debugging purposes
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
// create a new file name "test.jpg" in sdcard
File f = new File(Environment.getExternalStorageDirectory() + File.separator + "test.jpg");
try {
f.createNewFile();
// write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
.... make texture
}
私は今(これは単なる一部である)与えられたテキストからテクスチャを作成するための使用でこのコードを持っています。 しかし、私はビットマップ作成のどこかに欠陥があることを発見しました。私は今、sdカードにBitmapを保存して、どのようにしてすべてのシアンビットマップ(672B、164x7が寸法です)が得られるかを確認します。
誰もがテキスト付きのビットマップを作成しない理由を知りますか?私は何が間違っていますか?あなたが私を助けることができれば:)
私はそれが良い解決策であるかどうか分かりませんが、テキストで(画面上に表示せずに)TextViewを作成すると、そのビューを測定し、それらの次元でビットマップを作成し、ビットマップ(textview.draw(canvas))で作成されたキャンバス。あなたは、テキストにちょうど合うビットマップで終わるでしょう。私はそれがいかに効果的かについては分かりません。 – Jave
あなたが持っているフォントサイズ/スペーシングに合わせてtextviewが適応するので、うまくいきます。 – Jave
http://developer.android.com/reference/android/graphics/Bitmap.html#eraseColor(int) - > "ビットマップのピクセルを指定した色で塗りつぶします。" – ethrbunny