第一开始只能支持小尺寸的图片,宽度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字符图片相关推荐

  1. 图片二维码,如何将图片制作成二维码

    想要将图片做成二维码? 其实很简单. 你只需要一个二维码生成器就能做到. 比如,这个业界小有名声的二维彩虹二维码生成器. 比如企业活动中,要展示多张图片:比如你想要将喜欢的插画作品保存并分享:比如你要 ...

  2. ASCII码_字符与数字转换等问题

    判断函数 islower(char c) 小写字母 isupper(char c) 大写字母 isdigit(char c) 数字 isalpha(char c) 字母 isalnum(char c) ...

  3. python输出字符的ascii码_如何获取一个字符的ASCII码

    如何获取一个字符的ASCII码 Python内置ord函数 用来将字符转化成ASCII码 用法为: print('字符0 的ASCII码表示为',ord('0')) 结果为: 字符0 的ASCII码表 ...

  4. c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码

    导航:网站首页 > C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 相关问题: 匿名网友: 是一个字符表,一个 ...

  5. 编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符。

    编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符. /**编写一个程序,要求输入一个ASCII码值(如66), 然后输出相应的字符.** */#include <stdi ...

  6. java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算

    1. 测试目标 使用LKT系列加密芯片进行SHA1摘要运算并使用openssl验证正确性 2. 测试环境 本示例LKT加密芯片运行环境为windows系统.测试软件LCS KIT.LKT-K100开发 ...

  7. java汉字转换国标码_国标码(GB2312)的自动生成 | 学步园

    前面已提到,汉字是由两个字节构成的,每个字节占八位(8bits),那么每个汉字需要占十六位(16bits).而且由于中文字符的每个字节的最高位为1,则每个字节的ASCII码均大于127(27-1).这 ...

  8. 空格的ascii码_美国信息交换标准代码ASCII

    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和 ...

  9. 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...

    还记得以前的图种制作吗,今天给大家分形下一个相关的工具. 度盘下载(imageIN Beta1.0 (2.18MB)) :pan.baidu.com/s/1hqve8YS 官网下载:本地下载 这是一个 ...

  10. 透明图片怎么发给别人_微信群发祝福朋友早上好表情动态图片带字,最美的清晨早上好问候语图片表情...

    早上好问候语表情图片大全☀ 想要每天收到早上好问候语.早上好图片.早上好表情等早上好语录需要点击上面的蓝色字体"早上好问候语表情图片大全"再点击"关注".完全是 ...

最新文章

  1. 【推荐系统】推荐系统主流召回方法综述
  2. 解决Spring Boot 整合Security后,所有接口提示Unauthorized、返回401
  3. 【STM32】DAC相关函数和类型
  4. 【Java】登录操作中随机生成验证码的工具类
  5. Flutter下拉刷新,上拉加载更多数据
  6. 邮政编码要被取消了?回应:报道与事实不符
  7. python 读取excel文件,并读成数据框格式输出
  8. python 字典的函数
  9. Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language): 1 1.3. 静态类型语言(Statically Typed Languag
  10. php 图片 中文乱码,php utf8页面验证码图片中文乱码
  11. 网页连接mysql教程_网页怎么连接到数据库?
  12. 批量自动打印PDF文件辅助工具BatchOutput PDF for Mac
  13. 发那科机器人接线电源_实用FANUC 0i各模块接线及功能图
  14. 十、惯性导航误差传播规律
  15. c语言编写步进电机步数程序6,单片机步进电机程序问题
  16. fpga实操训练(一个典型的fpga系统)
  17. C++高阶 类型转换函数最透彻的一篇文章
  18. nc文件的读取与可视化-python
  19. 康奈尔计算机硕士学费,美国康奈尔大学研究生学费多少?申请条件有哪些?
  20. 【报告分享】2019中国高科技高成长50强暨明日之星年度报告.pdf(附下载链接)

热门文章

  1. python中eval函数作用
  2. Spark的Shuffle过程介绍
  3. eclipse中支持python
  4. linux内存基础知识和相关调优方案
  5. jquery-galleryview-2.0 漂亮多样化的图片特效(多项自定义)
  6. 使用Emit的时候类型XXX尚未完成
  7. Hosts 文件切换工具
  8. SpringCloud学习(SPRINGCLOUD微服务实战)一
  9. bzoj 1503: [NOI2004]郁闷的出纳员 (splay)
  10. 线程知识点——Event事件