当前位置: 首页 > news >正文

(超简单)将图片转换为ASCII字符图像

将一张图片转换为ASCII字符图像
原图:
在这里插入图片描述
效果图:
在这里插入图片描述

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;public class ImageToASCII {/*** 将图片转换为ASCII艺术字符图像** @param imgPath 图片路径(包括图片名)* @param outPath 生成的文本路径(包括文件名)*/public static void imageToASCII(String imgPath, String outPath) {// 表示不同灰度级别的ASCII字符final String base = "MNHQ&OC?7>!;:-.";StringBuffer result = new StringBuffer("");try {long start = System.currentTimeMillis();System.out.println("开始执行:");BufferedImage bufferedImage = ImageIO.read(new File(imgPath));// 使用嵌套的循环遍历图像的像素,每次处理一个区块(36 x 9像素)当前为 i=3 x j=2。for (int i = 0; i < bufferedImage.getHeight(); i += 3) {for (int j = 0; j < bufferedImage.getWidth(); j += 2) {int pixel = bufferedImage.getRGB(j, i); // 下面三行代码将一个数字转换为RGB数字int red = (pixel & 0xff0000) >> 16;int green = (pixel & 0xff00) >> 8;int blue = (pixel & 0xff);float gray = 0.299f * red + 0.578f * green + 0.114f * blue;int index = Math.round(gray * (base.length() + 1) / 255);result.append(index >= base.length() ? " " : String.valueOf(base.charAt(index)));}result.append("\r\n");}FileWriter fileWriter = new FileWriter(outPath);fileWriter.write(result.toString());fileWriter.flush();fileWriter.close();long end = System.currentTimeMillis();System.out.println("执行结束:共执行 " + (end - start) + "毫秒");} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {imageToASCII("E:\\images\\水娃.jpg", "E:\\images\\222.txt");}
}
http://www.lryc.cn/news/152487.html

相关文章:

  • In-Context Retrieval-Augmented Language Models
  • 多种免费天气api
  • 深度学习推荐系统(五)DeepCrossing模型及其在Criteo数据集上的应用
  • 图神经网络教程之HAN-异构图模型
  • Jupyter lab 配置
  • 股票行情处理:不复权,前复权,后复权
  • ip地址、LINUX、与虚拟机
  • MySQL存储过程
  • element-ui 自定义loading加载样式
  • 04-Apache Directory Studio下载安装(LDAP连接工具)
  • vmware虚拟机(ubuntu)远程开发golang、python环境安装
  • Elasticsearch文档多个输入字段组成ID实现方法
  • 编译链接实战(15)rdynamic选项的用途
  • 前端:js实现提示框(自动消失)
  • powerpc架构的前世今生
  • SQL-存储过程、流程控制、游标
  • JavaScript的数组和字典的用法
  • 中断和异常
  • 【python】实现积分
  • 微信仿H5支付
  • 数据结构——栈
  • 组件化开发之如何封装组件-react
  • 大数据HBase学习圣经:一本书实现HBase学习自由
  • Leetcode110. 平衡二叉树
  • Swift的NSClassFromString转换
  • linux上vim编辑器设置
  • SpringCloudAlibaba OpenFeign整合及详解
  • Mysql--技术文档--MVCC(Multi-Version Concurrency Control | 多版本并发控制)
  • 全网都在用的nnUNet V2版本改进了啥,怎么安装?(一)
  • iOS开发Swift-4-IBAction,group,音乐播放器-木琴App