温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Android中利用文字生成图片

发布时间:2021-04-08 16:26:36 来源:亿速云 阅读:424 作者:Leah 栏目:移动开发

这期内容当中小编将会给大家带来有关怎么在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 {   /**    * 核心,文本转成图片    * @param bitmap 原图片    * @param text 文本    * @param fontSize 文字大小    * @return 转好的图片    */   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<picHeight;y+=fontSize)     {       for(int x=0;x<picWidth;x+=fontSize)       {         int[] colors=getPixels(bitmap,x,y,fontSize,fontSize );         Paint paint=new Paint();         paint.setAntiAlias(true);         paint.setColor(getAverage(colors));         paint.setTextSize(fontSize);         Paint.FontMetrics fontMetrics =paint.getFontMetrics();         float padding=(y==0)?(fontSize+fontMetrics.ascent):((fontSize+fontMetrics.ascent)*2);         canvas.drawText(String.valueOf(text.charAt(idx++)),x,y-padding,paint);         if(idx==text.length())         {           idx=0;         }       }     }     return back;   }   /**    * 获取某一块的所有像素的颜色    * @param bitmap    * @param x    * @param y    * @param w    * @param h    * @return 颜色数组    */   private static int[] getPixels(Bitmap bitmap,int x,int y,int w,int h)   {     int[] colors=new int[w*h];     int idx=0;     for (int i=y;(i<h+y)&&(i<bitmap.getHeight());i++)     {       for (int j=x;(j<w+x)&&(j<bitmap.getWidth());j++)       {         int color=bitmap.getPixel(j,i);         colors[idx++]=color;       }     }     return colors;   }   /**    * 求多个颜色的平均值    * @param colors    * @return 平均颜色    */   private static  int getAverage (int[] colors)   {     //int alpha=0;     int red=0;     int green=0;     int blue=0;     for(int color:colors)     {       red += ((color&0xff0000)>>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);   } }

上述就是小编为大家分享的怎么在Android中利用文字生成图片了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI