图片转字符基本步骤
1.将图片读入内存
2.获得像素点颜色(Color)
- 获取Color属性:
- color.getRed()(范围0~1)
- color.getGreen()(范围0~1)
- color.getBlue()(范围0~1)
- color.getBrightness() 亮度(范围0~1)
3.选取亮度作为转换值,指定转换规则。
亮度高的用较为稀疏的字符表示,亮度低的用较为稠密的字符表示
4.缓存存盘
示例:
使用带字符缩放的软件打开效果更为显著。
代码
public class TestImageToTXT extends Application{
public static void main(String[] args) {
launch();
}
//图片转字符
public StringBuffer imageToStringBuffer(String jpg ,int length,int width) {
Image image=new Image(jpg,length,width,false,false);
PixelReader pixelReader = image.getPixelReader();
StringBuffer stringBuffer=new StringBuffer();
for(int i=0;i<image.getHeight();i++) {
for(int j=0;j<image.getWidth();j++) {
Color color=pixelReader.getColor(j, i);
double tmp = color.getBrightness()*0xff;
String str = change(tmp);
stringBuffer.append(str);
}
stringBuffer.append("\n");
}
return stringBuffer;
}
public void start(Stage primaryStage) throws Exception {
StringBuffer stringBuffer = imageToStringBuffer("file:c:\\bb.jpg",250,150);
writeToTXT(stringBuffer,"c:/output.txt");
Platform.exit();
}
//存盘
public void writeToTXT(StringBuffer stringBuffer,String newFile) {
File file= new File(newFile);
FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream(file);
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream);
BufferedWriter bufferedWriter=new BufferedWriter(outputStreamWriter);
bufferedWriter.write(stringBuffer.toString());
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
} catch (IOException e) {
System.out.println("error");
}
}
//转换规则
public String change(double value) {
if(value<40) {
return "#";
}else if(value<60) {
return "$";
}else if(value<80) {
return "@";
}else if(value<100) {
return "&";
}else if(value<120) {
return "%";
}else if(value<140) {
return "?";
}else if(value<155) {
return "=";
}else if(value<165) {
return "^";
}else if(value<175) {
return "+";
}else if(value<185) {
return "~";
}else if(value<200) {
return "-";
}else if(value<220) {
return "\"";
}else if(value<235) {
return "\'";
}else
return " ";
}
}