`
Function
  • 浏览: 64008 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

文字图片转成点阵的小工具

阅读更多
无聊,写了一个小工具。
将汉字转成点阵,图片转成点阵,看下效果图:





左边的是在记事本里显示的效果,再来一张:










功能还很单一,只能一种颜色,便宜量就是你每次跳几个像素取点。
适用地点:做一些有效果的字,可以用txt的替换工具将点变成其他的。
比如:字为“某某我爱你”,转成点阵后,将字的部分替换为“O”(字母),空格的部分替换为“0”数字,然后发给心爱的人,教她做一个替换,再把字显示出来,嘿嘿。
其实,图片也可以处理,但是效果没有汉字好,色差大!
大家用的时候可以多尝试几个颜色,要是文字图片的话,取灰色就出效果了!

运行环境:JDK6

package com.liu;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Main extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2764274223326342315L;
	private JTextArea showArea;
	private JButton btnOk;

	private JFileChooser jfc;
	private JLabel jLabel3;
	private JTextField point;
	private JLabel jLabel2;
	private JLabel jLabel1;
	private JComboBox offsetbox;
	private JScrollPane jScrollPane1;
	private JButton btnColor;
	private JPanel jpcolor;
	private JButton choosefile;
	private JTextField filepathArea;

	private String YES = "*";

	private String NO = " ";

	private Integer[] cell = new Integer[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

	private JLabel jlImage = new JLabel();

	private File image;

	private Color color = new Color(0, 0, 0);

	public Main() {
		getContentPane().setLayout(null);
		jfc = new JFileChooser("wenjian");

		btnOk = new JButton();
		getContentPane().add(btnOk);
		btnOk.setText("ok");
		btnOk.setBounds(869, 12, 59, 27);

		jScrollPane1 = new JScrollPane();
		getContentPane().add(jScrollPane1);
		jScrollPane1.setBounds(458, 56, 470, 334);

		showArea = new JTextArea();

		jScrollPane1.setViewportView(showArea);
		showArea.setBounds(458, 56, 470, 334);

		filepathArea = new JTextField();
		getContentPane().add(filepathArea);
		filepathArea.setBounds(12, 12, 150, 27);

		choosefile = new JButton();
		getContentPane().add(choosefile);
		choosefile.setText("\u56fe\u7247 ");
		choosefile.setBounds(174, 12, 89, 27);

		jpcolor = new JPanel();
		getContentPane().add(jpcolor);
		jpcolor.setBounds(294, 17, 25, 22);
		jpcolor.setBackground(Color.BLACK);

		btnColor = new JButton();
		getContentPane().add(btnColor);
		btnColor.setText("\u53d6\u8272");
		btnColor.setBounds(331, 12, 82, 27);

		ComboBoxModel offsetboxModel = new DefaultComboBoxModel(cell);
		offsetbox = new JComboBox();
		getContentPane().add(offsetbox);
		offsetbox.setModel(offsetboxModel);
		offsetbox.setBounds(470, 12, 62, 27);

		jLabel1 = new JLabel();
		getContentPane().add(jLabel1);
		jLabel1.setText("px");
		jLabel1.setBounds(537, 15, 18, 20);

		jLabel2 = new JLabel();
		getContentPane().add(jLabel2);
		jLabel2.setText("\u504f\u79fb\u91cf");
		jLabel2.setBounds(418, 15, 45, 20);

		point = new JTextField();
		getContentPane().add(point);
		point.setBounds(675, 12, 45, 27);
		point.setText(YES);

		jLabel3 = new JLabel();
		getContentPane().add(jLabel3);
		jLabel3.setText("\u586b\u5145\u5b57\u7b26");
		jLabel3.setBounds(592, 15, 80, 20);

		btnColor.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				color = JColorChooser.showDialog(Main.this, "Color", color);
				if (color == null) {
					color = Color.BLACK;
				}
				jpcolor.setBackground(color);
				System.out.println(color.getRGB());
			}
		});

		choosefile.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				getContentPane().remove(jlImage);
				jfc.setDialogTitle("Open JPEG file");
				jfc.showOpenDialog(jfc);
				image = jfc.getSelectedFile();
				if (image == null)
					return;
				String path = image.getAbsolutePath();
				filepathArea.setText(path);
				jlImage = new JLabel(new ImageIcon(image.getAbsolutePath()));
				getContentPane().add(jlImage);
				jlImage.setBounds(0, 56, 470, 334);
			}
		});

		btnOk.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				int offset = cell[offsetbox.getSelectedIndex()];
				showArea.setText("");
				String str = "";

				BufferedImage bi = null;
				try {
					bi = ImageIO.read(image);
				} catch (IOException e1) {
					e1.printStackTrace();
				}

				for (int i = offset / 2; i < bi.getHeight(); i += offset) {
					str = "";
					for (int j = offset / 2; j < bi.getWidth(); j += offset) {
						int pixel = bi.getRGB(j, i);
						if (pixel > color.getRGB()) {
							str += NO;
						} else {
							str += YES;
						}
					}
					showArea.append(str + "\n");
					System.out.println(str);
				}

			}
		});

		this.setSize(969, 453);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		showArea.setFont(new Font("黑体", Font.BOLD, 13));
	}

	public static void main(String[] args) {
		new Main();
	}

}


后面可以加上复合取色,这样图片的效果会好一点,小工具,欢迎交流
  • 大小: 106.9 KB
  • 大小: 54.9 KB
  • 大小: 121.7 KB
  • i2p.rar (196.4 KB)
  • 下载次数: 237
  • 大小: 97.8 KB
6
1
分享到:
评论
5 楼 seasoon 2011-12-26  
用来做十字绣很不错啊,哈哈
4 楼 Function 2011-12-26  
可以用PS设计自己的艺术字,最好粗一点,然后用这个工具进行转换,说用处到是不多,挺好玩的。
3 楼 Function 2011-12-26  
tron.lu 写道

楼主不简单描述一下思路 流程~?

这个就简单说一下,其实也不复杂,获取图片,创建BufferedImage对象,获取图片大小,然后按照偏移量逐行扫描,获取像素上的RGB值,和用户设置的RGB值比较,判断是否输出“*”。可以加上复合色的选取,用户设置多个颜色,然后取色时就可以把图片描述的更形象了。
2 楼 tron.lu 2011-12-26  

楼主不简单描述一下思路 流程~?
1 楼 shidan66 2011-12-26  
不错啊,顶一个~

相关推荐

    点阵液晶取模 图片汉字取模工具

    点阵液晶取模工具是一款专为液晶显示屏设计的软件,主要应用于LCD12864和1602等常见的液晶显示模块。该工具的独特之处在于它不仅支持汉字的取模,还支持图片的处理,使得用户在设计液晶显示内容时能够更加灵活多样。...

    LCD图形文字点阵提取工具

    LCD图形文字点阵提取工具是一种专门用于处理LCD(Liquid Crystal Display)显示技术的软件应用,它可以帮助用户将图形、文字甚至是图片转化为适用于LCD显示器的点阵数据。在电子设计领域,尤其是在嵌入式系统和...

    LCD点阵提取工具软件

    LCD点阵提取工具软件是一种专为处理液晶显示器(LCD)显示元素设计的专业应用程序。这个工具的主要功能是提取LCD显示屏上的像素点阵数据,以便于在软件开发、图形设计或者硬件故障排查等场景下使用。在电子设备和...

    android使用JNI图片转黑白图片实现点阵图(二值化)

    为android提供的二值化jni库,和完整demo,比Java代码的效率高10s! 一个基于jni的图像处理工具 包括二值化 灰度化 膨胀 腐蚀 等等 是android上图像处理的好例子 还能提高处理速度!实现点阵图的转化

    超好用的汉字点阵转换

    例如,在小屏幕设备或低分辨率的打印机上,可能需要更小的点阵尺寸,而在大屏幕或高分辨率的显示上则可以使用更大的点阵。 2. **字体种类支持**:除了标准的宋体、黑体等常见字体,PCtoLCD2002可能还支持多种特殊...

    用于各种大小led点阵取模软件

    总结来说,点阵取模软件是51单片机驱动LED点阵显示的重要辅助工具,它简化了图像和文字的数字化过程,使得非专业人员也能轻松制作出丰富的LED显示效果。通过深入理解和运用这类软件,可以进一步提升51单片机控制LED...

    非常好的点阵字库生成工具

    3. **图片点阵**:除了生成标准的文本点阵外,PCtoLCD2002还可以将图像转换为点阵格式,这对于制作像素艺术或者在低分辨率屏幕上显示图形非常有用。 4. **编辑功能**:该工具提供了丰富的编辑工具,允许用户对已...

    图片文字取模工具V2.0绿色版

    图片文字取模工具是一款简单实用的图片取模软件,图片文字取模工具能够帮助用户进行简单绿色的图片取模,实现任意大小任意字体的文字取模以及任意大小任意格式的图片,软件操作简单,有需要的朋友快来下载试试吧!...

    多国文字点阵字库生成器 3.8注册机

    多国文字点阵字库生成器是能显示不同国家不同大小类型字体的软件。这个软件在Windows系统下生成中英文数字、任意点阵大小字体、生成任意形状字符,还能生成二进制文件格式文件,还支持生成图片功能。可以根据用户的...

    点阵液晶字模图片提取软件

    点阵液晶字模图片提取软件是一种专为处理点阵液晶显示技术而设计的工具,它使得用户能够方便地从各种图像资源中提取出适合在点阵液晶显示器上显示的字符字模。点阵液晶显示技术广泛应用在电子设备的显示屏上,如...

    91OCR文字识别COM组件(点阵方式)

    2.附带字库建造工具,可以任意抓图,将图片建造成字库信息,供插件来调用; 3.字库建造工具附带穷举文字程序,可遍历操作系统中所有的字体字号,将其转换为所需要的字库; 4.支持颜色不纯,有所偏差的文字识别及字库...

    超级好用的屏幕点阵取模软件——PCtoLCD2002完美版

    标题中的“超级好用的屏幕点阵取模软件——PCtoLCD2002完美版”指的是PCtoLCD2002,这是一个专为单片机开发者设计的工具,用于从计算机屏幕上的图像或文字中提取点阵数据,以便在低分辨率的液晶显示器(LCD)上显示...

    用c#提取汉字字模点阵信息

    点阵字模是将汉字分解成一个二维的点阵,每个点代表汉字的一部分。例如,一个16x16的点阵可以用来表示小字体的汉字,每个点可以是黑色(表示有墨)或白色(表示空白),这样组合起来就形成了完整的汉字图像。 在C#...

    最新unicode点阵字库生成工具(fontmaker)

    (适合小字库) b. 增加了 “扫描方向及反显”设置。 2. Multi-Language V1.01 a. 修改了除 office 2000 外,其它不能支持的问题。 V1.00: (20110627) 1. 继承 FontMaker V2.01 的所有功能。 2. 增加了一个...

    android 点阵字库

    点阵字库是一种预先定义好的像素图形集合,每个字符由一个特定大小的二维像素网格表示,通过这种方式,系统能够快速准确地在屏幕上绘制出文字。 一、点阵字库的工作原理 点阵字库的工作原理相对简单。每个字符都由...

    点阵取模 12864图片取模 单片机通讯软件 modbus通讯软件

    点阵取模工具可以帮助开发者将图形或文字转化为适合单片机处理的格式,以便在显示屏上正确显示。 12864图片取模则特指针对128x64像素分辨率的图形进行的取模操作。这种液晶显示器常用于小型电子设备,如智能仪表、...

    8x8点阵码生成器.zip

    8x8点阵码生成器是一个实用工具,主要服务于学习和使用点阵码的学生和专业爱好者。点阵码是电子工程领域中常见的表示字符或图形的技术,尤其在LED显示、液晶显示屏等方面应用广泛。8x8点阵码指的是用8行8列的二进制...

    led点阵文字

    本软件专为通用LED点阵文字图片的生成而设计,旨在简化这一过程,让用户能够轻松创建和控制LED显示的内容。 点阵由一系列排列整齐的小LED灯组成,通过点亮不同的灯来形成字符或图形。在8x8点阵中,每个点代表一个...

    取模软件(用于点阵屏取模)

    点阵屏,也称为矩阵显示器,是由一系列小点组成的,每个点可以独立控制亮灭,通过排列组合形成文字、图形或图像。在设计和制作点阵屏显示内容时,取模过程至关重要,因为它决定了最终显示的质量和效果。 标题中的...

    汉字字模点阵数据批量生成工具操作手册

    - **附加功能**:图片Logo点阵数据生成、GB2312和GBK字符集支持、繁简字体转换、单字节字符处理、串口通讯与数据传输、汉字自动识别与非汉字字符清除等。 #### 2. 应用场景 该工具广泛应用于点阵LED大屏幕、LCD...

Global site tag (gtag.js) - Google Analytics