当然,有了原理我们还需要通过实践来验证。我们来编写一个java程序实现将上面给出的test.png这张图片字符化。我将使用字符来描述一张图片称为图片字符化。
首先定义一个字符串,用于做替换的。
private final static String IMG_ASCII = "@#&$%*o!;.";
编写一个方法,该方法要做的事情如下:
根据传递进来的图片路径信息读取图片,就是将图片文件加载到内存中。
// 读取图片文件到内存
BufferedImage image = ImageIO.read(new File(imgPath));
获取图片的宽高,根据宽度限制循环范围遍历图片的每一个像素,获取到每一个像素的rgb值。
// 获取图片宽度和高度
int width = image.getWidth();
int height = image.getHeight();
// 遍历图片像素,x横坐标,y纵坐标
for (int y = 0; y
for (int x = 0; x
int rgb = image.getRGB( x,y);
}
}
由于获取到的这个rgb值是包含r、g、b的值在里面的,所以需要分解分别获取到r的值、g的值和b的值。
//返回的颜色值是个整数,即四个字节,这四个字节保存的值从高位到低位分别位透明度a、r、g、b。
int r = (rgb & 0xff0000)>>16;
int g = (rgb & 0xff00)