java图片转ASCII码_将图片转化成对应的Ascii字符图片
第一开始只能支持小尺寸的图片,宽度200或者以下的,稍微大点的出来的效果就走样了。
于是我便在转码之前改变了一下图片的大小。
效果如下
原图
转后图
废话不多说,呈上代码。package com;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 图片转化Ascii
*/
public class AsciiPic {
/*
* 将image转换成bufferimage
*/
public static BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
return (BufferedImage)image;
}
// 加载所有像素
image = new ImageIcon(image).getImage();
BufferedImage bimage = null;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
int transparency = Transparency.OPAQUE;
// 创建buffer图像
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(image.getWidth(null), image.getHeight(null), transparency);
} catch (HeadlessException e) {
e.printStackTrace();
}
if (bimage == null) {
int type = BufferedImage.TYPE_INT_RGB;
bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
}
// 复制
Graphics g = bimage.createGraphics();
// 赋值
g.drawImage(image, 0, 0, null);
g.dispose();
return bimage;
}
public static Image creatImage(String Imgpath) {
Image srcImg = null;
try {
srcImg = ImageIO.read(new FileInputStream(Imgpath));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
//取源图
int width = 200; //假设要缩小到200点像素
int height = srcImg.getHeight(null)*200/srcImg.getWidth(null);//按比例,将高度缩减
Image smallImg =srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH);//缩小
return smallImg;
}
/**
* @param bfimage 图片路径
*/
public static void createAsciiPic(BufferedImage bfimage) throws IOException {
final String base = "@#&$%*o!;.";// 字符串由复杂到简单
final BufferedImage image = bfimage;
for (int y = 0; y
for (int x = 0; x
final int pixel = image.getRGB(x, y);
final int r = (pixel & 0xff0000) >> 16, g = (pixel & 0xff00) >> 8, b = pixel & 0xff;
final float gray = 0.299f * r + 0.578f * g + 0.114f * b;
final int index = Math.round(gray * (base.length() + 1) / 255);
System.out.print(index >= base.length() ? " " : String.valueOf(base.charAt(index)));
}
System.out.println();
}
}
public static void main(final String[] args) {
try {
AsciiPic.createAsciiPic(toBufferedImage(creatImage("/Users/liurenkui/Desktop/boy.jpeg")));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ascii输出在控制台,若想直接保存图片可进行修改
来自CSDN作者:VERMAN_S
相关文章
java图片转ASCII码_将图片转化成对应的Ascii字符图片相关推荐
- 图片二维码,如何将图片制作成二维码
想要将图片做成二维码? 其实很简单. 你只需要一个二维码生成器就能做到. 比如,这个业界小有名声的二维彩虹二维码生成器. 比如企业活动中,要展示多张图片:比如你想要将喜欢的插画作品保存并分享:比如你要 ...
- ASCII码_字符与数字转换等问题
判断函数 islower(char c) 小写字母 isupper(char c) 大写字母 isdigit(char c) 数字 isalpha(char c) 字母 isalnum(char c) ...
- python输出字符的ascii码_如何获取一个字符的ASCII码
如何获取一个字符的ASCII码 Python内置ord函数 用来将字符转化成ASCII码 用法为: print('字符0 的ASCII码表示为',ord('0')) 结果为: 字符0 的ASCII码表 ...
- c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码
导航:网站首页 > C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 相关问题: 匿名网友: 是一个字符表,一个 ...
- 编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符。
编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符. /**编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符.** */#include <stdi ...
- java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算
1. 测试目标 使用LKT系列加密芯片进行SHA1摘要运算并使用openssl验证正确性 2. 测试环境 本示例LKT加密芯片运行环境为windows系统.测试软件LCS KIT.LKT-K100开发 ...
- java汉字转换国标码_国标码(GB2312)的自动生成 | 学步园
前面已提到,汉字是由两个字节构成的,每个字节占八位(8bits),那么每个汉字需要占十六位(16bits).而且由于中文字符的每个字节的最高位为1,则每个字节的ASCII码均大于127(27-1).这 ...
- 空格的ascii码_美国信息交换标准代码ASCII
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和 ...
- 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...
还记得以前的图种制作吗,今天给大家分形下一个相关的工具. 度盘下载(imageIN Beta1.0 (2.18MB)) :pan.baidu.com/s/1hqve8YS 官网下载:本地下载 这是一个 ...
- 透明图片怎么发给别人_微信群发祝福朋友早上好表情动态图片带字,最美的清晨早上好问候语图片表情...
早上好问候语表情图片大全☀ 想要每天收到早上好问候语.早上好图片.早上好表情等早上好语录需要点击上面的蓝色字体"早上好问候语表情图片大全"再点击"关注".完全是 ...
最新文章
- 【推荐系统】推荐系统主流召回方法综述
- 解决Spring Boot 整合Security后,所有接口提示Unauthorized、返回401
- 【STM32】DAC相关函数和类型
- 【Java】登录操作中随机生成验证码的工具类
- Flutter下拉刷新,上拉加载更多数据
- 邮政编码要被取消了?回应:报道与事实不符
- python 读取excel文件,并读成数据框格式输出
- python 字典的函数
- Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language):	1 1.3. 静态类型语言(Statically Typed Languag
- php 图片 中文乱码,php utf8页面验证码图片中文乱码
- 网页连接mysql教程_网页怎么连接到数据库?
- 批量自动打印PDF文件辅助工具BatchOutput PDF for Mac
- 发那科机器人接线电源_实用FANUC 0i各模块接线及功能图
- 十、惯性导航误差传播规律
- c语言编写步进电机步数程序6,单片机步进电机程序问题
- fpga实操训练(一个典型的fpga系统)
- C++高阶 类型转换函数最透彻的一篇文章
- nc文件的读取与可视化-python
- 康奈尔计算机硕士学费,美国康奈尔大学研究生学费多少?申请条件有哪些?
- 【报告分享】2019中国高科技高成长50强暨明日之星年度报告.pdf(附下载链接)