欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 图片转换字符码图片

程序员文章站 2024-02-16 17:54:46
...

原图:                                                                               

java 图片转换字符码图片    

效果图:

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'};
	
}

就这样啦。

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