从TextView创建图像(不会丢失质量)

时间:2016-07-27 07:46:34

标签: android textview android-drawable android-bitmap

我有一个应用程序,可以创建用户在文本字段中写入的任何内容的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);
    
  3. 问题是,生成的图像的质量与TextView中显示的质量不同

    有没有办法提高质量?

    是否因为TextView没有背景?如果是这样,是否有解决方法?需要生成的图像只是文本,因此透明背景

    由于

1 个答案:

答案 0 :(得分:0)

我相信质量取决于您创建图像时的屏幕尺寸。我建议你把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;

}