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

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


[img]http://dl.iteye.com/upload/attachment/611624/4189635f-f9e2-30bc-94bf-a3f6788703c4.jpg[/img]


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

[img]http://dl.iteye.com/upload/attachment/611617/ea85e02d-22aa-32bc-9b36-9a3cbaba0e90.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/611619/fae17897-aa09-3219-9cbf-82d167fcc9dc.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/611621/be6510a1-052e-3f5b-963f-1254a90db43d.jpg[/img]


功能还很单一,只能一种颜色,便宜量就是你每次跳几个像素取点。
适用地点:做一些有效果的字,可以用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();
}

}


后面可以加上复合取色,这样图片的效果会好一点,小工具,欢迎交流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值