android开发 通过文字生成头像 (包含使用额外的字体)
2014-03-18 13:08
369 查看
2014/03/20
补充
项目实践过程中发现一个问题:UI设计师给我的图是220*220像素的。但是我将其转换成Bitmap之后他的像素值变大了......
尝试着在当前方式上解决,但是没找到办法。
后来通过更换了一个转化bitmap的方式,刚刚那个问题就不存在了。具体代码如下:
====================================================================
由官方提供的接口API就已经可以实现了。无需借助网上第三方jar包。
包含使用额外的字体
主要实现描述如下:
创建bitmap对象的代码如下:
创建一个400像素*400像素、背景色绿色、文字加粗的图像
2.创建一个400*400像素,背景绿色,自定义字体(UnDinaru.ttf)的图像
做了一个操作,跑一个线程,生成500张图片,耗时37s,在部分情况下耗时达70s。(大概范围是40s~80s之间)
补充:
文字在写入到图层上的时候,可以设置文本的对齐方式(左对齐,右对齐...)
补充
项目实践过程中发现一个问题: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);
相关文章推荐
- android开发 通过文字生成头像 (包含使用额外的字体)
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- Android 开发中使用到二维码生成和解析
- Android开发教程之Fragment定义、创建与使用方法详解【包含Activity通讯,事务执行等】
- 使用python脚本生成Cocos2dx中的Android.mk文件和Vs2013中的包含路径
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- XNA 如何使用字体绘制文字,Windows Phone 游戏开发
- [原]零基础学习SDL开发之在Android使用SDL2.0加载字体
- 从零开始学android开发-通过WebService进行网络编程,使用工具类轻松实现
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- android修改系统字体大小,使用隐藏类和方法以及怎么生成系统app使用系统权限
- 零基础学习SDL开发之在Android使用SDL2.0加载字体
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- 【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析
- Android 开发中怎么使用自定义字体?
- java生成四位随机数,包含数字和字母 区分大小写,特别适合做验证码,android开发
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址