Создать изображение из TextView (без потери качества)

У меня есть приложение, которое будет создавать PNG-изображение всего, что пользователь пишет в текстовом поле (пользовательский шрифт и цвет)

Я делаю что-то вроде этого:

  1. Установите гарнитуру, цвет текста и текст в TextView (BG прозрачный)
  2. Используя код ниже, сгенерируйте изображение для 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;

}

Другие вопросы по тегам