├── .gitignore ├── README.md └── src └── me └── veryyoung └── Pic2Ascii.java /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | target/ 4 | out/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pic2ascii 2 | 将图片转换为 ascii 码 3 | 4 | 5 | 使用方法: 6 | 7 | 运行 Pic2Ascii.java 的 main 方法,并传入图片的有效路径。 8 | 9 | 10 | 11 | LLCCzzUU ~~,,//ZZ 12 | JJ``;;mmXXMM__uu 13 | bb{{jj[[ll||qq""))BB\\:: 14 | OO bbkkppCCjj))--rr''kk&&++\\ 15 | vvff{{::]]jjUU%% vv,,xxzz&&ffwwvv 16 | %% ++rr!!mm UU``"" mm)) 17 | II ZZ--nn ZZ"" mmBB 18 | YY ]]0088ZZ OO%%vvnn jj 19 | [[ pp QQ 11 "" tt 20 | kk;; ++ ++ ll %% bb 21 | cc//ff BB @@ \\ ^^ }}..!! 22 | 00`` mm nn ''LL || mm 23 | ii II tt pppp ;; 24 | ii!! $$pp ))LL{{ ;; )) ]] >> ;;hh[[ LL;;\\ ~~aa 25 | dd oo II // ::?? ;;LL aa'' 88 00 ??88 26 | OOpp ~~ jj &&wwOOCCkk"">> && __ ZZOOvv 27 | << iiww88CC BB &&~~ww``\\wwdd iinn|| qq 28 | LL >>%%YY## ^^..LL||^^ nn''LL"" uuWW 29 | zzQQ $$LL WW**^^ooff nn;; $$ 30 | mmOOoo IIYY-- pp XX\\ 31 | !!nn ii ;;zzJJ \\XX<< QQ )) 32 | ttBB,, LLJJ bb II '' ++ aa ++aa ##--ZZ 33 | bb// ll{{ff oo XX 88vv 34 | uurrvv __ @@ }}QQ(( ''iill 35 | !!// ww %% nn ff **$$hh 36 | UUXX zzww%%XX++""}} ccYYbb 37 | }} ``!!ooMM__&&QQkkbb qq;; 38 | ,, ((LLuuhh--zzkkYY\\++zz &&UU 39 | vv\\ }} qqCC..88__,,&& 8811 [[ 40 | >>(( !!UUffqq}}}}bb BB 41 | "" ll}}zziiXXww nn 42 | ~~XXXX>> CCXXooqqff vvccQQ@@ 43 | --__ rr)) &&vvttQQbb.. 00}} 44 | 00 YY CC << 45 | 11 kk## ZZ$$ $$ 46 | )) ||]]QQ >> 47 | nn11 OO WW@@ WWdd 48 | II && !! UUuu 49 | hh::]]JJOO%% MMbb ,, oo::__JJ%%00 50 | CC UU pp|| 51 | XX xx YY 11 52 | %%oo || << ## )) ?? 53 | 00## ~~ cc >>}} 54 | }}~~}} @@??pp((QQ ddiiQQ88 }} ,, 55 | :: \\uu oo11 ttpp$$++ || 56 | tt}}LL(( >>kk,,aa 57 | \\ XX 58 | 59 | -------------------------------------------------------------------------------- /src/me/veryyoung/Pic2Ascii.java: -------------------------------------------------------------------------------- 1 | package me.veryyoung; 2 | 3 | /** 4 | * Created by veryyoung on 2015/9/28. 5 | */ 6 | 7 | import javax.imageio.ImageIO; 8 | import java.awt.image.BufferedImage; 9 | import java.io.File; 10 | import java.io.IOException; 11 | 12 | public class Pic2Ascii { 13 | 14 | 15 | /** 16 | * Some empirically chosen characters that give good results. 17 | */ 18 | private static final char[] defaultCharacters = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\"^`'. " 19 | .toCharArray(); 20 | 21 | public static void main(String[] args) { 22 | if (0 == args.length || args[0].equals("")) { 23 | System.err.println("请输入正确的图片路径"); 24 | return; 25 | } 26 | System.out.println(transform(args[0])); 27 | 28 | } 29 | 30 | public static String transform(String path) { 31 | BufferedImage image = getImage(path); 32 | 33 | StringBuffer stringBuffer = new StringBuffer(); 34 | 35 | for (int y = 0; y < image.getHeight(); y++) { 36 | for (int x = 0; x < image.getWidth(); x++) { 37 | int index = (int) (Math.random() * defaultCharacters.length); 38 | stringBuffer.append(isBlack(image.getRGB(x, y)) ? " " : defaultCharacters[index]); 39 | stringBuffer.append(isBlack(image.getRGB(x, y)) ? " " : defaultCharacters[index]); 40 | } 41 | stringBuffer.append("\n\r"); 42 | } 43 | return stringBuffer.toString(); 44 | 45 | } 46 | 47 | 48 | public static boolean isBlack(int pixel) { 49 | boolean result = false; 50 | 51 | int r = (pixel >> 16) & 0xff; 52 | int g = (pixel >> 8) & 0xff; 53 | int b = (pixel) & 0xff; 54 | 55 | 56 | int tmp = r * r + g * g + b * b; 57 | if (tmp > 3 * 128 * 128) { 58 | result = true; 59 | } 60 | 61 | return result; 62 | } 63 | 64 | public static BufferedImage getImage(String path) { 65 | BufferedImage image = null; 66 | try { 67 | image = ImageIO.read(new File(path)); 68 | } catch (IOException e) { 69 | System.err.println("未能获取到图片"); 70 | e.printStackTrace(); 71 | } 72 | 73 | return image; 74 | } 75 | 76 | } 77 | --------------------------------------------------------------------------------