Java代码将图片生成txt文本

给定任意图片,可生成txt文本内容,代码如下:

package com.itcorey.vo;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * <p>
 * 根据图片生成字符图案
 * 1.图片大小缩放
 * 2.遍历图片像素点
 * 3.获取图片像素点亮度
 * 4.匹配字符
 * 5.输出图案
 *
 * @author corey
 */
public class GeneratorTextImage {
    private static final char[] PIXEL = {'@', '#', '8', '&', 'o', ':', '*', '.', ' '};

    public static void main(String[] args) throws Exception {
        // 图片缩放
        BufferedImage bufferedImage = makeSmallImage("/Users/corey/Desktop/WechatIMG229.png");
        // 输出
        printImage(bufferedImage);
    }

    public static void printImage(BufferedImage image) throws IOException {
        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);
                Color color = new Color(rgb);
                int red = color.getRed();
                int green = color.getGreen();
                int blue = color.getBlue();
                // 一个用于计算RGB像素点亮度的公式
                Double luminace = 0.2126 * red + 0.7152 * green + 0.0722 * blue;
                double index = luminace / (Math.ceil(255 / PIXEL.length) + 0.5);
                System.out.print(PIXEL[(int) (Math.floor(index))]);
            }
            System.out.println();
        }
    }

    public static BufferedImage makeSmallImage(String srcImageName) throws Exception {
        File srcImageFile = new File(srcImageName);
        if (srcImageFile == null) {
            System.out.println("文件不存在");
            return null;
        }
        FileOutputStream fileOutputStream = null;
        BufferedImage tagImage = null;
        Image srcImage = null;
        try {
            srcImage = ImageIO.read(srcImageFile);
            int srcWidth = srcImage.getWidth(null);// 原图片宽度
            int srcHeight = srcImage.getHeight(null);// 原图片高度
            int dstMaxSize = 60;// 目标缩略图的最大宽度/高度,宽度与高度将按比例缩写
            int dstWidth = srcWidth;// 缩略图宽度
            int dstHeight = srcHeight;// 缩略图高度
            float scale = 0;
            // 计算缩略图的宽和高
            if (srcWidth > dstMaxSize) {
                dstWidth = dstMaxSize;
                scale = (float) srcWidth / (float) dstMaxSize;
                dstHeight = Math.round((float) srcHeight / scale);
            }
            srcHeight = dstHeight;
            if (srcHeight > dstMaxSize) {
                dstHeight = dstMaxSize;
                scale = (float) srcHeight / (float) dstMaxSize;
                dstWidth = Math.round((float) dstWidth / scale);
            }
            // 生成缩略图
            tagImage = new BufferedImage(dstWidth, dstHeight, BufferedImage.TYPE_INT_RGB);
            tagImage.getGraphics().drawImage(srcImage, 0, 0, dstWidth, dstHeight, null);
            return tagImage;
        } finally {
            if (fileOutputStream != null) {
                try {
                    fileOutputStream.close();
                } catch (Exception e) {
                }
                fileOutputStream = null;
            }
            tagImage = null;
            srcImage = null;
            System.gc();
        }
    }
}

如生成的txt图像如下

888##888888888888888888&&&&&ooooooo:.                              . *##@@@######@##8888###8&  .....
888#####88888888888#8&&&&&&&&ooooooo:                              .&##@@@@@####@@#88888###8.  .....
#########8888888888888&&&&&&&&oooooo:                               o##@@@@@####@#8888##8#8&  ......
####8###888888888888888&&&&&&&&&oooo:*                              *##@@@@@@#####88&&88&&88o.......
8888####888888888#88888&&&&&&&&&oooo::*                             .8#@@###8#####88&&&&&&&&8o......
88########8888888888888&&&&&&&ooo&o&o::*.                           .#@@@888#8####888&oo:o&&&&&.....
#8######8888888888888888&&&&&&888&ooooo::::*.                        &@@@888##88##8888&&oo&88##.....
#8#####8888#888888888888888888&&ooooooooooo::::*                     o#@@8#&8#88#####888&o&#8*......
8####8888888888888######888&&&&&&oooooooooooooo:::::.                .@@@@888888######888&o&8#* ....
8##88888#888######@@#&&&&&&&&&&&&&&&ooooooooooooo:o&&                 o@@@@#8&&8######888&&###&  ...
###8ooo&###@@@@@@@@@@@8&&&&&&&&&&&&&&&&ooooooooooo88*                 .@@@@@############88#@#&.     
##o88##8o@@@@@@@@@@@@@@@#8&&&&&&&&&&&&&o&&oooooo&88#                   *@@@@################8*      
@#8#8##@@8@@@@@@@@@@@@@@@@#88&&o&&&&&&&&&o&ooo&8#888             ...   *#####################.. ....
@###&8##@#@@@@@@@@@@@@##@@@@@@#88&&&oooooo&&&88888#............****::88&8#########@#######88&*******
@##8888##8#@@@@@@@@@@888###@@@@@@#####888###8#####:::::::::::::&8###@#############@@####@#888&oooooo
@##&8##@#8##@@@@@@@@#888#####@@@@@##8############::::::::::::8@@#888@@#@##########@@@@@@@@@@@8oooooo
@##8#########@@@@@@#888888#######@@#8#&:o#####o::::::::::::o888##@###@@@@##########@@@@@@@@@@&oooooo
@#@&&8#@888#@@@@@@#88888888####88###8o::::::::::::::::::::o88#####@##@@@@@###########@######8ooooooo
@##&8###&&88#@@@@#8888888888###8&##8::::::::::::::::::::::88#######@##@@@@@##888#####8::::oooooooooo
@@8888#@&&88#@@@@#888888&&&8#@##88&o:::::::::::::::::::::88#########@#@@@@@##8888####&::::::oooooooo
@@#8#&##8888##@@###88888&&&&88###8&:::::::::::::::::::::8###########@@#@@@@@#8888888##8&:::ooooooooo
@@@88#&##888########888&&&oo&8&8&&&::::::::::::::::::::o#8#########@@@#@@@@@##888888@####o:ooooooooo
@@@#&&88##88########8888&&oooooo&&&o::::::::::::::ooooo############@@@#@@@@@@888888@@@####o:oooooooo
@@@@8&&88#88######8#8888&&oooooo&&&&*&&&ooo:::::::oo&o&@8##########@@@#@@@@@@#8888#@@@###@&ooooooooo
@@@@@&&&&##888######8888&&oo::oo&&&&oooooo::::::::::::&######@@@@##@@@#@#@@@@@#88&@@@@@@@@8o&888&&&&
@@@@@#8&8##8888#888888888&oo::oo&&&&&*o:ooo:::::::::::8###@##@@@@##@@@@@#@#@@@@#&&@@@#@#@@#&&&&&&&&&
##@@@@#######8#8888888888&&oo:o&8888o*&8888&ooo:::::::####@##@@@@##@@@@@#@@@@@@@@#@@@@@#@@@&&&oo&oo&
###@@@#########8888888888&&ooo&888&&o:oo&&&&&&&oo:::::@##@###@@@@@#@@@@@#@@@@@@@@@#@@@@@@@@&ooo&&&&&
################888888888&&oo&8#8&o&&oo:oo&8&o&&oo:::o###@###@@@@@@#@@@@#@@@@@@@@@#@@@@@@@@&oooo&&&&
################888888888&&&o&&##8#@8ooooo&&&&&&ooooo8##@@####@#@@@#@@@@@@@#@@@@@##@@@@@@@@8ooooo&o&
#######@########888888888&&&&o&&88ooooo&&&&&88&oo::::##@@#####@#@@@#@@@@@@@#@@@@@##@@@@@@@@#oo&&o&oo
########@@######888888888&&&&oo&&oo&8&&&&&o&&88&ooooo@#@#######@@@@@@@@@@@@#@@@@@##@@@@@@@@#oo&&&&&o
########@@@#####8#888888&&&&&oooooo&88888&&&&8888&o:8@#####@###@##@@@@@@@@@@@@@@@##@@@@@@@@@oooooooo
##########@@######8888888&&&&&&o::&&&&&8###8888&&ooo@@#@@@@@@@#@##@@@@@@@@@@@@@@@@#@#@@@@@@#&oo&&ooo
######8###@@@#####8888888&&&#####&88&&&&888###88&o:8@@8&&&888#@#@@#@@@@@@@@@@@@@@@@@o..*........:88&
######88##@@@@#####888888&&&8#@&&ooo&&&&&&&&88&&ooo@@#oo&&&8&&&8###@@@@@@@@@@@@@@@8oo&..*******..o8&
######88##@@@@@#####88888&&o&&&*8&&&88&&&oooooooo&#@@#o&&&&&&oo::##@@@@@@@@@@@  8&&oo&*.*******..:&&
##########@@@@@@#####88888&&&88&&&&&8888888&ooo&&8@@@#o&&&&&&ooo::#@@@@@@@@@@..*:&&&&&o*:*********8&
###########@@@@@@@####88888&&888&&&&&8&&&&&ooooo&&@@@@&&&&&&&&ooooo@@@@@@@@@.****&&&&&8*:::::***.*&&
###########@@@@@@@@####8888&&&&&&&&&8&oooooo::oo&8@@@#&&&&&&&&oooo&@@@@@@@#*****8888888*oooo::*:**8&
###########@@@@@@@@@####888&&o&&888##8o&&o&oo::oo&@@@#&&&&&&&oooo&8@@@@#88.::***8888888:&&&&o:****88
#############@@@@@@@@@##888&&:&&888##88#8&&&&oooo8@@@#&&&&&&&&&&88##888&& *::**8888####8888&8oo**o&&
################@@o:@@@##88&&o88&&o&&&888&&&o&&&&@@@@@&&&&&&&&8#8&&&&&&&.*:::*o88####8##o. ##8&:*&&&
#################88&oo@@##88&&8&&ooo&oo&&&&oo&&&#@#@@@&&o&&&&##&o&&&&:o*.****:8####8&@@.  ..@##&:&&&
#################88&*o&&@###8&&o&&&&&&oooo&oooo8@#@@@@&&o&&8##&&@8@&&&#8****#####@@@# .*:***&8#8&888
#####8############88o:o#8888888&&&&&&o&ooo&&&&&88#@@@@&&&888888&88&#@#@#***8###@@.....:&&:*8&o&&&&88
.8#8#8#8#####@####88&&:*o&&&&&&&&&&oooooo&88&o&8##@@@@o&88#888888@##@#@***&#@.... .:*.o8&:#88oo&&8&&
@*#88#8#8###8@######88oo*:o&&&8#8&&&&&&&&&88&&&@#@@@@@o&8######&#@@##@*****...**.:*:.*&8&:##8oo&&&&&
@@#8888888###@@###@#888&oo*&&&&8&&8888888&o&8&8#@@@@@@o8######*::@@@@@#***.*****&&:.*:&&o####&&88&&8
@@o888888####@@@@#####88&&..88&&&&8888&&&&&&&#@@@@@@@@&8####@.:::#@@@@@********:&8:**o&&o@##8&:#8888
#@#888888@##8@@@@@#@###88o...88&&8&&&&&###88&##@@@@@@@&######.:::@@@@@@******..**8&:*o&o@@#88&oo8888
@@@#8#88@@#&#@@@@@@######**...888##88888###88##@@@@@@@&8#####.::*@@@@@@#*****.*..&8o:8&@###88&o:o&&8
@@@@888@@@#&#@@#@@@#@###:****..##@#####888888##@@@@@@@8888##.***:@@@@@@#******.*.o&&:o&8###88&oo:&&8
##@@@8@@@@&#8#@8@@@@@@@&::****..o&888#####88#@@##@@@@@###8##o**::@@@##@#****.oo**:&&:o&8###888&o:&##
@###@#@@@@8#88@#@@@@@@&oo::*****..&&8#####8oo&&8#@@@@@@#@@@.**::o@@###@*****.8&::o8&:o&#####88&ooo&&
###@###@@@#888@#@@@@@&&&&oo::*****..8######@@###@@@@@@@@@@@.**:*#8@@@o8::****88o:&888###@####8&&o:o&
@###@###8##8##@#@@@@8888&&oo::*******.o##&&o&8#@@@@@@@8&:...:::**:&@@oo*o:*.:&8o*8&##@@@@@@###8&o::o
#8######&8#8##@#@@####8888&&o:::::::::**.*.....*.*.*..*.. **.**::::8&:::::*::&8&*88#@@@@@@@@##88&::&
8########&&8##@#@########88&&&o:o&&o&&:::***::**********.**.***.::o&:::::#oo*&#8:88@@@@@@@@@@###8o:o
888#####@#&88@@#@@@#######888&&&&&8888&oo:ooo:::::::**:::******&o&&&::**:&8&&8#888#@@@@@@@@@@@##8&o:
##888####@8&#@@#@@@#########88888888##8&o&8&&oooo&o::o&*o:o****&&8*::**::888888 88#@@@@@@@@@@@@##&oo
###88&#8#@#8#@@#@@@@###################888888888&ooo&&..oo::***.&&*****::##8#8:888@@@@##@@@@@@@@#8oo
##@##8&88@@8#@@#@@@@######################88888&&&o&8.*:ooo::**..*::***:.8888###88@@@@##@@@@@@@@#:**
#####88&88#8.@@@@@@@###############@@##@##8888&&&888.*:ooo:::***...*.***8##@######@@@@###@@@@@@@oo**
#@####8#&###o@@#&&@@############@#@@@@#####8888&888*::oooo::::*****.***:#@@######@@@@####@@@@@@@&&oo
#@#@###8#8#@8@@8&&&8@@##########@@@@@@#####888##8#**:ooooooo::::::::*:*.@@#######@@@@##@@@@@@@@@8&&o
@#@@###88#8#8@@8&&88&&##########@@@@@@@########## *:oo&&&&ooooo::oo:***:@########@@@##@@@@@@@@@8&&&o
@@####@@#####@@##@@#&&8&8########@@@@@@@#########*ooo&o&&&&&&&&&&o&o::*@@@#######@@@@@@@@@@@@@@&8&&o
@@@##@@@@#88#@@#@@@#888#8&&@####@@@@@@@@#@@#####.*o&&&&&&&8&&&&&&&&&oo:@@#######@@@@@@@@@@@@@@#8&&oo
@@@@@#@##@@88@@#######888#8&&#@@@@@@@@#@@@@@@: .ooo&888&&&&&&&&&&&8888o@@@##@###@@@@@@@@@@@@@@88&&&o
@@@@#####@@@#@@&&88888888&&8&&&@@@@@@@@@@@@@& *.&oo8&88&&&&88888888888:@@@@@@##@@@@@@@@@@@@@@#888&&o
@@@@@@#####@8@@88888888##88888&&8@@@@@@@@@@@:.:**o:88888888888888##88#@@@@@@@##@@@@@@@@@@@@@@#888&&o
@@@@@@@@####@#@888#888####&88##888#@@@@@@@@@::*&88&:88&&&88#8888##@@@@@@@@@@@##@@@@@@@@@@@@@@8&8#8o&
@@@@@@@@@#####@#888888####8#8#888@@#########&&o.8&8:o&#@8######@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@&&@#8o&
@@@@@@@@@@#8#@@#8888#####88888&&####8888888888::.oo8*&#o&8##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&@#8&&

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值