登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 847|回复: 0

【Android教程】文本转图片

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-6-20 20:21:49 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. 文本转成图片2 s6 d/ w* W& k- ?+ e8 `- u" E
  2. # c# p7 u, v3 l) K0 ]
  3.   /**: q  K) F/ B8 z
  4.      * 核心,文本转成图片5 H+ c, Z$ t& w
  5.      * @param bitmap 原图片
    ; R2 X! R. c: A4 c) r& j
  6.      * @param text 文本
    ; b- }# @! D  ]
  7.      * @param fontSize 文字大小
    ! R4 @' ~1 f  f) O
  8.      * @return+ q; F7 [+ U9 w) _
  9.      */
    / d5 C( v$ b1 i( m# N
  10.     public static Bitmap getTextBitmap(Bitmap bitmap,int backColor, String text, int fontSize)
    " i1 Y9 ^5 ^) |0 U9 Y
  11.     {  b* W. e* z* N4 n" K; w
  12.         if(bitmap==null)7 d9 Y7 H9 ?0 G( |( H/ E& q
  13.             throw  new IllegalArgumentException("Bitmap cannot be null.");
    , j2 v3 M& Z0 Q& X  X5 S
  14.         int picWidth=bitmap.getWidth();0 M; h5 R2 L3 S  P. u' V: n9 B
  15.         int picHeight=bitmap.getHeight();
    ' @0 [) Q7 V4 I. o4 j, _, }
  16.         Bitmap back= Bitmap.createBitmap((bitmap.getWidth()%fontSize==0)?bitmap.getWidth():((bitmap.getWidth()/fontSize)*fontSize)
    ) E2 h% Z8 G: \
  17.                 ,(bitmap.getHeight()%fontSize==0)?bitmap.getHeight():((bitmap.getHeight()/fontSize)*fontSize)
    # v' H- L: v' A# C3 H: c7 O
  18.                 , Bitmap.Config.ARGB_8888);) H" B8 w$ k  ]( H! u* Q# s
  19.         Canvas canvas=new Canvas(back);9 ?- B- x7 |5 P) A# h
  20.         canvas.drawColor(backColor);7 G* C5 W8 g0 q9 y# F$ u
  21.         int idx=0;
    % O* D7 ]4 C" @8 S9 ^
  22.         for(int y=0;y<picHeight;y+=fontSize)1 K/ ], P8 m4 T% X5 p+ c0 J* e
  23.         {$ l5 I: e' `. \" d( z- q5 m0 W
  24.             for(int x=0;x<picWidth;x+=fontSize)1 S1 i$ L. C& ^& D# p" @( ?$ F. Y
  25.             {
    / P. q; [! I! |( i) q
  26.                 int[] colors=getPixels(bitmap,x,y,fontSize,fontSize );
    5 @1 S: r5 j; r: |

  27. + F  J1 @* Z0 X& x3 I
  28.                 Paint paint=new Paint();/ m, v" D" n, Z$ `
  29.                 paint.setAntiAlias(true);3 }6 d, `( t+ D+ f6 g+ ^2 g8 h% [
  30.                 paint.setColor(getAverage(colors));( k" Q5 f$ N+ f( W+ a
  31.                 paint.setTextSize(fontSize);
      `( i  i7 |0 c" J/ A+ V
  32.                 Paint.FontMetrics fontMetrics =paint.getFontMetrics();' c/ k/ y8 g6 u: `# X! z5 a
  33.                 float padding=(y==0)?(fontSize+fontMetrics.ascent):((fontSize+fontMetrics.ascent)*2);0 u' E( G$ |5 `) A3 d
  34.                 canvas.drawText(String.valueOf(text.charAt(idx++)),x,y-padding,paint);
    + z# g0 R/ a  q+ u! Y7 T
  35.                 if(idx==text.length())
    ; t2 a1 Z8 i$ Q2 C/ M: B3 W9 v' q% p
  36.                 {
    0 [% F  \0 |- \, Q0 A9 ~# r5 F
  37.                     idx=0;1 x2 n. r$ S5 o# T  ?+ A
  38.                 }( v3 c6 H" P% A; W

  39.   r1 P0 D5 }* w% T6 M
  40.             }, V, g5 a6 F5 Z$ b' y- m, K% [9 {
  41.         }
    : [2 v" E9 ^2 Z. c. g
  42. ! _- F* ^; e7 {$ L# ~, y
  43.         return back;" q4 h( \% ^' b  a9 s
  44.     }
    ' A. T) Z; O4 p
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区 |网站地图

GMT+8, 2024-5-6 05:32 , Processed in 0.169034 second(s), 79 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表