CSDNRGY 2015-09-07 08:34 采纳率: 87.5%
浏览 2407
已采纳

Java实现的图片转字符图,求优化?

 import java.io.*;
import java.util.logging.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import sun.misc.BASE64Encoder;

public class ZiFuTu {

    public static void main(String[] args) throws Exception {
        //这里放张图片
        String imgPath = "D:\\NetBeansProjects\\MyJava\\src\\image\\A.png";
        FileInputStream fileInputStream = new FileInputStream(imgPath);
        BufferedImage image = ImageIO.read(fileInputStream);
        StringBuilder imageToAscii = imageToAscii(image);
        StringBuilder sb = new StringBuilder();
        System.out.println(imageToAscii);
    }

    //三十二位颜色
    private final static char[] asc = {' ', '`', '.', '^', ',', ':', '~', '"',
        '<', '!', 'c', 't', '+', '{', 'i', '7', '?', 'u', '3', '0', 'p', 'w',
        '4', 'A', '8', 'D', 'X', '%', '#', 'H', 'W', 'M'};

    public static StringBuilder imageToAscii(BufferedImage image) {
        //System.out.println(asc.length);
        StringBuilder sb = new StringBuilder();
        int width = image.getWidth();
        int height = image.getHeight();
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                int rgb = image.getRGB(j, i);
                int R = (rgb & 0xff0000) >> 16;
                int G = (rgb & 0x00ff00) >> 8;
                int B = rgb & 0x0000ff;
                int gray = (R * 30 + G * 59 + B * 11 + 50) / 100;
                int index = 31 * gray / 255;
                sb.append(asc[index] + " ");
            }
            sb.append("\n");
        }
        return sb;
    }
}

往里放个图片输出的字符图会很大,如何实现字符图的压缩啊?

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-09-07 15:12
    关注

    如果你对图片精度要求不高,可以采样,比如如下代码可以缩小到1/4

     for (int i = 0; i < height; i += 2) {
                for (int j = 0; j < width; j += 2) {
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私