本文介绍了Android实现用文字生成图片的示例代码,分享给大家,具体如下:
效果图
我们先来看看效果图,可以看到下图由各种颜色的”美”字拼接而成,形成了一张不一样的图片。
原理
生成这种图片的原理很简单,但是当时看开源项目时愣是看不懂,因为没学过Python,但是仔细研究,终于能慢慢的理解该开源项目源码,并把它改写成Android平台的源代码。下面把这个算法的主要内容讲给大家,该算法大致原理如下:
1.根据原图片的大小和字体的大小创建一张空白图片
2.把原图片按字体的大小分成若干块,取每一块的像素的颜色的平均值
3.将指定文本以得到的平均颜色画在新建的空白图上
package com.luoye.fpic.util;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class Utils {
public static Bitmap getTextBitmap(Bitmap bitmap, String text, int fontSize)
{
if(bitmap==null)
throw new IllegalArgumentException("Bitmap cannot be null.");
int picWidth=bitmap.getWidth();
int picHeight=bitmap.getHeight();
Bitmap back= Bitmap.createBitmap((bitmap.getWidth()%fontSize==0)?bitmap.getWidth():((bitmap.getWidth()/fontSize+1)*fontSize)
,(bitmap.getHeight()%fontSize==0)?bitmap.getHeight():((bitmap.getHeight()/fontSize+1)*fontSize)
, Bitmap.Config.ARGB_8888);
Canvas canvas=new Canvas(back);
canvas.drawColor(0xfff);
int idx=0;
for(int y=0;y>16);
green += ((color&0xff00)>>8);
blue += (color&0x0000ff);
}
float len=colors.length;
//alpha=Math.round(alpha/len);
red=Math.round(red/len);
green=Math.round(green/len);
blue=Math.round(blue/len);
return Color.argb(0xff,red,green,blue);
}
private static void log(String log)
{
System.out.println("-------->Utils:"+log);
}
}
相关链接
参考的开源项目:https://github.com/xlzd/img2html
完整的android代码:https://github.com/luoyesiqiu/textImg
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



