• Java图片转字符


    很久都没有更新博客了,昨天下午一个朋友问我能不能将一张图片转换成字符画,然后我想我这个朋友不知道,也许有的朋友以不知道,我就简单的分享一下

    package com.xsl.zhuanhuan;

    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.nio.Buffer;

    import javax.imageio.ImageIO;
    /***
     * 图片转换为字符
     * @author Administrator
     */
    public class ImgChar {
       public static void main(String[] args) throws Exception {
        //获取图片路径
       String path="F:/image/1.jpg";
       //将path放入缓冲区
       File file=new File(path);
       //放到缓冲区图片
       BufferedImage image=ImageIO.read(file);
       //通过下标来实现替换图片中的每个像素
       String base="@#&$%*!;.";
         //图片都有一个个像素点组成的
      //用两个for循环进行遍历
       for(int y=0;y<image.getHeight();y+=2){
        for(int x=0;x<image.getWidth();x++){
         int ps=image.getRGB(y, x);
         //System.out.println(pixe);//输出图片像素输出的值
         /**
          * 该像素位置RGB颜色的一个整数形式(RGB颜色:黄绿蓝)
          * 0XABCDEF
          * 0X:代表声明进制
          * AB:代表R
          * CD:代表G
          * EF:代表B
          *
          * getRGB调用一个colorMode(颜色模型).getRGB()
          * | 反推  &
          * 16 --》  8 ---》 0
          *
          * getRGB的源码的实现方法
          * public int getRGB(int x,int y){
          *    return colorModel.getRGB(raster.getDataElement(x,y,null));
          * }
          * 可以按Ctrl+鼠标左键继续进行看它的底层源码(有兴趣的可以继续去了解)
          * */
         int r=(ps & 0xff0000)>>16;
         int g=(ps & 0xff00)>>8;
         int b=(ps & 0xff);
         //计算灰度值 r g b 乘以相应的灰度值
         float gray=r * 0.4f + g * 0.6f + b * 0.1f;
         //计算下标的公式
         int index=Math.round(gray*(base.length()+1)/255);
        //判断下标和上面的字符去比较
         if(index>=base.length()){
          //如果下标比上面的字符要长的话就不填充
          System.out.print("  ");
         }else{
          //选择相应下标的字符进行填充
          System.out.print(base.charAt(index));
         }
         }
        System.out.println();
       }
       }
    }

    运行结果:部分截图

  • 相关阅读:
    excel如何设置输入数字后单元格自动填充颜色
    怎样在excel中添加下拉列表框
    System.Security.Cryptography.CryptographicException 出现了内部错误
    怎样让webservice在浏览器远程浏览时像在本地浏览一样有参数输入框
    EF实体框架常见问题
    jdk安装环境变量设置
    IIS网站部署注意点
    浏览器被hao.360.cn劫持怎么办
    python-字典
    python-list列表
  • 原文地址:https://www.cnblogs.com/xslbk/p/7718239.html
Copyright © 2020-2023  润新知