之前在网上看到一些字符图,感觉很有意思,就想着自己写一个。
然而·打印出来后,由于电脑分辨率等原因,而字符串过多,一直没法很好的预览。
加上网上没有比较好的字符串转图片的工具。就只好查资料自己写一个。
将图片转化成字符图片源码
public static void main(String[] args) throws IOException {
String[] strings = new String[]{"▏","▎","▍","▋","▊","▉"};
int i1 = ((256*256+256)*256+256+strings.length) / strings.length;
//需要添加的图片
ImageIcon imgIcon = new ImageIcon("D:\\2.jpg");
BufferedImage img=new BufferedImage(imgIcon.getIconWidth() ,imgIcon.getIconHeight(),BufferedImage.TYPE_INT_RGB);
Graphics2D gs=(Graphics2D)img.getGraphics();
gs.drawImage(imgIcon.getImage(), 0, 0, imgIcon.getImageObserver());
int width = img.getWidth();
int height = img.getHeight();
StringBuilder builder = new StringBuilder();
for (int i=0;i<height;i+=2){
builder.append("\n");
for (int j=0;j<width;j+=2){
int rgb=img.getRGB(j, i);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
rgb=((R*256)+G)*256+B;
builder.append(strings[strings.length - 1- rgb/i1]);
}
}
// System.out.println(builder.substring(1));
//生成文件的路径
String filePath = "D:\\XX22.jpg";
File outFile = new File(filePath);
// 创建图片
BufferedImage image = new BufferedImage(width*3, height*3,
BufferedImage.TYPE_INT_BGR);
Graphics g = image.getGraphics();
g.setClip(0, 0, width*3, height*3);
g.setColor(Color.white); // 背景色白色
g.fillRect(0, 0, width*3, height*3);
g.setColor(Color.black);// 字体颜色黑色
g.setFont(new Font("宋体", Font.PLAIN, 6));// 设置画笔字体
String[] split = builder.substring(1).split("\n");
// g.drawString(split[0], 0, 50);
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
g.drawString(split[i], 0, i*6);
}
g.dispose();
ImageIO.write(image, "jpg", outFile);
}