Android 使用Paint和Canvas将文字保存为图片

这里是使用Paint和Canvas直接将文字绘制成图片的方案。
如果是界面上显示的文字的话其实也可以使用文字的容器View的Bitmap来生成图片。

直接上代码,说明写注释里了

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.Log;

import java.io.FileOutputStream;

/**
 * 生成图片
 * Created by QZD on 2017/5/8.
 */

public class bitmapFactory {
    private static int imageH=15;//图片高
    private static int imageW=270;//图片宽
    private static float brushSize=20;//画笔粗细
    private static int brushColor=Color.WHITE;//画笔颜色
    private static int bgColor=Color.RED;//背景颜色
    private static int imageQuality=100;//图片压缩质量

    /**
     * 绘制图片
     * @param path 生成图片的地址
     * @param _msg 文字
     * @return
     */
    public static boolean writeImage(String path,String _msg){
        try {
            Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);//Paint.ANTI_ALIAS_FLAG参数开启抗锯齿
            p.setColor(brushColor);
            p.setTextSize(brushSize);

            //创建一个矩形来获取文字区域宽高,作为图片大小
            Rect rect = new Rect();
            p.getTextBounds(_msg,0,_msg.length(),rect);
            imageW = rect.width();
            imageH = rect.height();

            Bitmap bitmap = Bitmap.createBitmap(imageW, imageH, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            canvas.drawColor(bgColor);
            canvas.drawText(_msg, 0, brushSize, p);//注意这里的y参数是baseline的位置而不是文字开始或中心的位置

            Log.d("LOGCAT", "path:"+path);
            //将Bitmap保存为png图片
            FileOutputStream out = new FileOutputStream(path);
            bitmap.compress(Bitmap.CompressFormat.PNG, imageQuality, out);
            Log.d("LOGCAT", "png done");
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return false;
    }
}
    原文作者:书柜里的松鼠
    原文地址: https://www.jianshu.com/p/9e809662f683
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞