zoukankan      html  css  js  c++  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'};
    	
    }
    

    就这样啦。

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

  • 相关阅读:
    生活网站
    input 输入值的监听 禁止输入特殊字符
    jq 插件分享
    css3 特效分享
    sharepoint---RBS回收站清空设置
    &&和||
    DataTable得到某行某列的值
    后台刷新当前页面和弹出对话框跳转页面
    c#.netGr idView1在div不局中
    DIV UL LI
  • 原文地址:https://www.cnblogs.com/qq1995/p/10359000.html
Copyright © 2011-2022 走看看