java---------bufferedImage字符图片输出~~~

字符图片输出~~~

你有没有给TA送礼物而困扰过?
你有没有绞尽脑汁不知道送啥好玩的?
口红?哦,所有的颜色都是红色在这里插入图片描述
布娃娃?玩偶?额,抱着它走在街上不太好意思…
包?咦,太贵了买不起???
零食?没有创意,TA嫌你没有❤…

哎妈呀,咋整???????

别急别慌,我们今天就来唠一唠新式的送礼物大法咯,保准惊艳了TA的时光和青春

首先搞到一张你对象的靓照(你要是没有那就完蛋了)在这里插入图片描述

第二步,直接上代码

package demo;

import java.awt.image.BufferedImage;
import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

public class Pic {
	public static void main(String[] args) throws IOException {
	//这里面是放大后的每个像素点的文字哦,你可以随便换
		String sentence = "love";
		//先读入你的图片所在了路径
		BufferedImage image = ImageIO.read(new File("F:/image/cat.jpg"));
		//获得当前图片的宽和高(注意不要太大,否则内存溢出)
		int height = image.getHeight();
		int width = image.getWidth();
		//遍历得到每一个像素点
		for (int y = 0; y < height; y++) {
			for (int x = 0; x < width; x++) {
			//得到每一个像素点的颜色,此时是彩色的哦
			    int color = image.getRGB(x,y);
			    //打印出来是黑白的,所以要计算灰度值
			    int r = (color & 0xff0000) >> 16;
				int g = (color & 0xff00) >> 8;
				int b = color & 0xff;
				float gray = 0.299f * r + 0.578f * g + 0.114f * b;
				//得到当前每一个像素的下标
			    int index = Math.round(gray/255*(sentence.length()+1));
			   //进行判断 
			    if(index < sentence.length()) {
			    //这里注意不能换行
			    	System.out.print(sentence.charAt(index));
			    }else {
			    1.防止数组越界  
			    //2.当前点是白色  值就是等于字符串的长度 就不用打印 因为打印也不看出来 打印空格 轮廓出来就行
			    	System.out.print(" ");
			    }
			}
			//内层for循环结束后换行
			System.out.println();
			
		}
	}
}

注意得把编码格式换成utf-8。否则出不来效果哦~

在这里插入图片描述

小哥哥小姐姐们,快快行动起来啦~
换上你喜欢的TA的照片,看看效果吧


版权声明:本文为weixin_48682891原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。