public class ZiFuTu {
public static void main(String[] args) throws Exception {
//这里放张图片
String imgPath = "D:\\NetBeansProjects\\MyJava\\src\\image\\A.png";
FileInputStream fileInputStream = new FileInputStream(imgPath);
BufferedImage image = ImageIO.read(fileInputStream);
StringBuilder imageToAscii = imageToAscii(image);
StringBuilder sb = new StringBuilder();
System.out.println(imageToAscii);
}
//三十二位颜色
private final static char[] asc = {' ', '`', '.', '^', ',', ':', '~', '"',
'<', '!', 'c', 't', '+', '{', 'i', '7', '?', 'u', '3', '0', 'p', 'w',
'4', 'A', '8', 'D', 'X', '%', '#', 'H', 'W', 'M'};
public static StringBuilder imageToAscii(BufferedImage image) {
//System.out.println(asc.length);
StringBuilder sb = new StringBuilder();
int width = image.getWidth();
int height = image.getHeight();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
int rgb = image.getRGB(j, i);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0x00ff00) >> 8;
int B = rgb & 0x0000ff;
int gray = (R * 30 + G * 59 + B * 11 + 50) / 100;
int index = 31 * gray / 255;
sb.append(asc[index] + " ");
}
sb.append("\n");
}
return sb;
}
}
往里放个图片输出的字符图会很大,如何实现字符图的压缩啊?
如果你对图片精度要求不高,可以采样,比如如下代码可以缩小到1/4
for (int i = 0; i < height; i += 2) {
for (int j = 0; j < width; j += 2) {
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。