转换文字为符号
思路:将字符串通过画笔,画到图像中,然后遍历图像的长宽,一个点一个点的取出该点的RGB颜色。 如果如果为文字的颜色。就用指定的字符串填充。否则也用指定的字符串填充。
package com.zf.test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
public class Transform {
public static final String FILL = "*";
public static final String EMPTY = " ";
public static final int NARROW = 2 ; //缩小倍数
public static final int FONT_SIZE = 90; //文字大小
public static final String FONT_TYPE = "楷体";
public static final int IMG_HEIGHT = 80 ;
public static final int FONT_WIDTH = 100 ; //每个文字在图片中的宽度
public static final int FONT_X = 0 ;
public static final int FONT_Y = 70 ;
public static final int COLOR_ALLOWANCE = 100 ; //颜色容差
public static void main(String[] args) {
String result = transform("说好的729呢");
System.out.println(result);
}
public static String transform(String input){
StringBuilder sb = new StringBuilder() ;
/*根据文字长度,创建指定长度的Image,然后将文字写入到Image中*/
BufferedImage bi = new BufferedImage( input.length() * FONT_WIDTH , IMG_HEIGHT , BufferedImage.TYPE_INT_RGB ) ;
Graphics g = bi.getGraphics() ;
Font font = new Font(FONT_TYPE , Font.BOLD , FONT_SIZE );
g.setFont(font);
g.drawString( input , FONT_X , FONT_Y);
int width = bi.getWidth() ;
int height = bi.getHeight() ;
/* 根据图像的长宽,逐个遍历图像的点 */
for (int i = 0; i < height ; i += NARROW) {
for (int j = 0; j < width ; j += NARROW) {
Color color = new Color(bi.getRGB(j , i));
int rc = (int)(Math.pow((Color.WHITE.getRed() - color.getRed()) , 2) +
Math.pow((Color.WHITE.getGreen() - color.getGreen()) , 2) +
Math.pow((Color.WHITE.getBlue() - color.getBlue()) , 2)) ;
/* 根据容差值填充字符串 */
String tmp = rc < COLOR_ALLOWANCE ? FILL : EMPTY;
sb.append(tmp);
}
sb.append("\n");
}
return sb.toString() ;
}
}
打印结果(截图):
原文作者:_jerrytiger
原文地址: https://blog.csdn.net/is_zhoufeng/article/details/9861177
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/is_zhoufeng/article/details/9861177
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章