Создать изображение из TextView (без потери качества)
У меня есть приложение, которое будет создавать PNG-изображение всего, что пользователь пишет в текстовом поле (пользовательский шрифт и цвет)
Я делаю что-то вроде этого:
- Установите гарнитуру, цвет текста и текст в TextView (BG прозрачный)
Используя код ниже, сгенерируйте изображение для TextView
Bitmap returnedBitmap = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(), Bitmap.Config.ARGB_8888); //Bind a canvas to it Canvas canvas = new Canvas(returnedBitmap); //Get the view's background Drawable bgDrawable =textView.getBackground(); if (bgDrawable!=null) //has background drawable, then draw it on the canvas bgDrawable.draw(canvas); // draw the view on the canvas view.draw(canvas); FileOutputStream out = null; out = new FileOutputStream(new File(filename)); returnedBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
Проблема в том, что качество сгенерированного изображения отличается от того, что отображается в TextView.
Есть ли способ улучшить качество?
Это из-за того, что TextView не имеет фона? Если так, есть ли обходной путь для этого? Нужно, чтобы сгенерированное изображение было только текстом, отсюда и прозрачный фон
Спасибо
1 ответ
Я считаю, что качество зависит от размера экрана, из которого вы создаете изображение. Я предлагаю вам поместить Textview в FrameLayout и создать растровое изображение из FrameLayout.
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}