您的位置:首页 > 移动开发 > Android开发

android开发 通过文字生成头像 (包含使用额外的字体)

2014-03-18 13:08 369 查看
2014/03/20
补充
项目实践过程中发现一个问题:UI设计师给我的图是220*220像素的。但是我将其转换成Bitmap之后他的像素值变大了......
尝试着在当前方式上解决,但是没找到办法。
后来通过更换了一个转化bitmap的方式,刚刚那个问题就不存在了。具体代码如下:
InputStream is = context.getResources().openRawResource(faceModel.getImageID());
Bitmap bitmap = BitmapFactory.decodeStream(is).copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);// 初始化画布绘制的图像到icon上


====================================================================

由官方提供的接口API就已经可以实现了。无需借助网上第三方jar包。
包含使用额外的字体

主要实现描述如下:
创建bitmap对象的代码如下:

创建一个400像素*400像素、背景色绿色、文字加粗的图像

Bitmapbitmap = Bitmap.createBitmap(400,400,
Config.ARGB_8888);//创建一个宽度和高度都是400、32位ARGB图
Canvascanvas =newCanvas(bitmap);//初始化画布绘制的图像到icon上
canvas.drawColor(Color.GREEN);//图层的背景色
Paintpaint =newPaint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);//创建画笔
paint.setTextSize(50.0f);//设置文字的大小
paint.setTypeface(Typeface.DEFAULT_BOLD);//文字的样式(加粗)
aint.setColor(Color.GRAY);//文字的颜色
canvas.drawText("zhou_guobao",120,
130, paint);//将文字写入。这里面的(120,130)代表着文字在图层上的初始位置
canvas.save(canvas.ALL_S***E_FLAG);//保存所有图层
canvas.restore();
return
bitmap;


2.创建一个400*400像素,背景绿色,自定义字体(UnDinaru.ttf)的图像

Bitmapbitmap = Bitmap.createBitmap(400,400,
Config.ARGB_8888);//创建一个宽度和高度都是400、32位ARGB图
Canvascanvas =newCanvas(bitmap);//初始化画布绘制的图像到icon上
canvas.drawColor(Color.GREEN);//图层的背景色
Paintpaint =newPaint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);//创建画笔
// =======================上面代码与例子一上的代码重复=======================================

paint.setTextSize(80.0f);
//为画笔设置一个额外的字体,该字体文件保存在/assets/目录中
paint.setTypeface(Typeface.create(Typeface.createFromAsset(context.getAssets(),"UnDinaru.ttf"),Typeface.NORMAL));
canvas.drawText("guobao",20,
230, paint);//将文字写入
canvas.save(canvas.ALL_S***E_FLAG);//保存所有图层
canvas.restore();
returnbitmap;



做了一个操作,跑一个线程,生成500张图片,耗时37s,在部分情况下耗时达70s。(大概范围是40s~80s之间)
开始时间:03-1812:38:40.191: I/System.out(2330): 2014-03-18 12:38:40
结束时间:03-1812:39:17.791: I/System.out(2330): 2014-03-18 12:39:17

补充:
文字在写入到图层上的时候,可以设置文本的对齐方式(左对齐,右对齐...)

paint.setTextAlign(Align.RIGHT);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐