java 图片转换字符码图片

原图:                                                                               

    

效果图:

挺像的。。

代码:

package com.gx.image;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;

import javax.imageio.ImageIO;

/**
* @ClassName: CharImgUtil 
* @Description: 图片转字符图片工具类
* @author zhoujie 
* @date 2018年7月26日 下午10:11:03 
* @version V1.0
 */
public class CharImgUtil {

	public static void main(String[] args) throws Exception {
        String imgPath = CharImgUtil.class.getResource("test.jpg").getFile();
        String fileUrl = "C:\Users\zj\Desktop\char.jpg";
        System.out.println(imgPath);
        createCharImg(imgPath, fileUrl);
    }
	
	/**
	* @Title: createCharImg 
	* @Description: 生成字符码图片
	* @param @param imgPath
	* @param @param fileUrl    设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public static void createCharImg(String imgPath, String fileUrl){
		FileInputStream fileInputStream;
		try {
			fileInputStream = new FileInputStream(imgPath);
			BufferedImage image = ImageIO.read(fileInputStream);
	        //生成字符图片
	        int w = image.getWidth();
	        int h = image.getHeight();
	        int more = 5; //图片放大倍数
	        BufferedImage newbufferedImage = new BufferedImage(w*more, h*more, 1);;
	        Graphics g = newbufferedImage.getGraphics();
	        g.setColor(Color.white);// 画笔颜色
	        g.fillRect(0, 0, w*more, h*more);// 填充图形背景
	    	// 设置字体
			g.setFont(new Font("宋体", Font.ITALIC, more*2)); //more*2:字体高度
			g.setColor(Color.black);// 画笔颜色
			// 绘制字符
	        for (int i = 0; i < h; i++) {
	        	StringBuilder sb = new StringBuilder();
	            for (int j = 0; j < w; 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] + ""); //添加每个字符
	            }
	            g.drawString(sb.toString(), 0, (i+1)*more); //绘制每行字体位置,主要y轴改变
	        }
	        g.dispose();
	        ImageIO.write(newbufferedImage, "jpg", new File(fileUrl)); //输出图片
	        System.out.println("图片生成");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//三十二位颜色对应字符
    private final static char[] asc = {' ','`', '.', '^', ',', ':', '~', '"',
        '<', '!', 'c', 't', '+', '{', 'i', '7', '?', 'u', '3', '0', 'p', 'w',
        '4', 'A', '8', 'D', 'X', '%', '#', 'H', 'W', 'M'};
	
}

就这样啦。

生成二维码图片+图片转字符图片代码下载

原文地址:https://www.cnblogs.com/qq1995/p/10359000.html