前言
灵感来源于JAVA课上同学の颜文字表情,于是决定做一个JAVA小项目来娱乐玩一下QAQ
代码
1. package test; 2. import javax.imageio.ImageIO; 3. import java.awt.*; 4. import java.awt.image.BufferedImage; 5. import java.io.File; 6. import java.io.IOException; 7. 8. public class image_text { 9. public static void main(String[] args) { 10. // 读取图片文件 11. File imageFile = new File("path/to/your/image.jpg"); 12. try { 13. // 将图片转换为BufferedImage对象 14. BufferedImage bufferedImage = ImageIO.read(imageFile); 15. 16. // 设置字符画的宽度和高度 17. int asciiWidth = 80; 18. int asciiHeight = 40; 19. 20. // 缩放图片以适应字符画的宽度和高度 21. BufferedImage resizedImage = new BufferedImage(asciiWidth, asciiHeight, BufferedImage.TYPE_INT_RGB); 22. Graphics2D g2d = resizedImage.createGraphics(); 23. g2d.drawImage(bufferedImage, 0, 0, asciiWidth, asciiHeight, null); 24. g2d.dispose(); 25. 26. // 将图片转换为字符画 27. char[] asciiChars = {'@', '#', 'S', '%', '?', '*', '+', ';', ':', ',', '.'}; 28. StringBuilder asciiArt = new StringBuilder(); 29. for (int y = 0; y < asciiHeight; y++) { 30. for (int x = 0; x < asciiWidth; x++) { 31. Color pixelColor = new Color(resizedImage.getRGB(x, y)); 32. int grayValue = (pixelColor.getRed() + pixelColor.getGreen() + pixelColor.getBlue()) / 3; 33. int index = Math.min((int) (grayValue * asciiChars.length / 255.0), asciiChars.length - 1); 34. asciiArt.append(asciiChars[index]); 35. } 36. asciiArt.append("\n"); 37. } 38. 39. // 输出字符画 40. System.out.println(asciiArt.toString()); 41. } catch (IOException e) { 42. e.printStackTrace(); 43. } 44. } 45. }
效果演示
1. ,,,,,,,,,,,,:................................................................... 2. ,,,,,,,,,,,,,,,,................................................................ 3. ,,,,,,,,,,,,,,,,,,,............................................................. 4. ,,,,,,,,,,,,,,,,,,,,,,...........@@@,...@%...................................... 5. ,,,,,,,,,,,,,,,,,,,,,,,,,.......,@+++;@@@;@,;@@@@@@;............................ 6. ,,,,,,,,,,,,,,,,,,,,,,,,,,,,......;@@?;;:;@@;;;;;;;;%@@@@....................... 7. ,,,,,,,,,,,,,,,,,,,,,,,,@@@@@*+;;*@@@@@#;;;:.;;;;...;;;;+@@..................... 8. ,,,,,,,,,,,,,,,,,,,,,@@@;;;;;;;;;;;;;;;;;;....:;..;;;%;;;;S@@................... 9. ,,,,,,,,,,,,,,,,,,,@@%;..,+%SSSS*::;;;;;#;+*#@***;:;;;;%%;;;S@@................. 10. ,,,,,,,,,,,,,,,,,@@:..+%SS*,.,;;;..;;;+@**@%???@@**;;;..;%%?;;@@S............... 11. ,,,,,,,,,,,,,,,@@*;;SS?*;..;;;;..;?;+*@*S?S@@S??%@%**;;;..;%S+;;@@:............. 12. .,,,,,,,,,,,,@@?;;*?;;;;,;;;;;..*%;;*@@#+++++++@@@@@**;;;;.,%S%;;*@@............ 13. ...,,,,,,,,@@#;;;;;;+;;;;?%;;..;%%;**@+++++++++++++@@**;*@;..;S%;.;@@S.......... 14. ......,,,,@@;*;;;;.?+;;;S%;;,..;%%;*@@++++::::::::++@@**;*S@;.:SS;.;*@@......... 15. .........@@;*;;S;.??;;;%%+;;;;*;%%;*@@+++;:::::::::++@@**;**@;;*?*;,;*@@........ 16. ........@@;*?;?S,.@*;;;%%;;,.;**;;;*@@+++::::::::::++@@@?*;*%@;.:**;.;*@#....... 17. .......*@;;@*;S%.,@*;;+%%;;+:;**;;;*S@@@@@@;::::::@@@;::?@@@%@@,+*@*;.*@@....... 18. .........@@@?;%%;,@*;;;%%;;*;;*@?;;**@%::..@@@::@@........:;@@@+;*@@*;*@@....... 19. ...........@*;*%;%@*;;;%%;;*S;**@@@#@@@;.....S@@@.......?@@@#;@@+**@#+*@#....... 20. ...........@#+;%%%@**;;;;;;**@%@@@;*+;;;@@@@@.@@@.......@@@@@.:@@@@@@**@........ 21. ...........@@*;;;*@**;;;;;;**@@@:......#@@@@@.*@@.......*@@@#.@@*@@............. 22. ...........,@*;;;*@S**;;;;;+?@@@........?@@@..@@@@...........S@:+@@............. 23. ............@@@@@?@@@@@@@@@@%+@@@............@@::S@@.......%@@::+#@%............ 24. ..............:@@+++????????***:@@@;......+@@@@S?*S@@@@@@@@:+????#@S............ 25. ...............@@;::?????*****?::::+@@@@@@%;;;;;;;;;;;+@@::??????@@,............ 26. ...............@@@::???????**??:::::::;@@;;;;;;;;;;;;;;@@:???????@@............. 27. ................@@@::?????????::::::::@@@@@@@@@@@@@@@@*@*:??????@@,,............ 28. .................?@@::::;;;;::::::::::::@@@;;;;;;;;;@@@::::???@@@,,,,,.......... 29. ...................@@@**@@@@#;;;;;;;;::::::@@@@@@@#::::::::+@@@,,,,,,,,,,....... 30. .....................?@@S%%%%@@@@@@@;;;;;;;;;::::::::::?@@@@*,,,,,,,,,,,,,,,.... 31. ....................;@@#%%%%%%%S%%%%%S@@@@@@*;;;;;;%@@@@@@@,,,,,,,,,,,,,,,,,,,,. 32. ...................,@@@@@@%%%%???????%%%%%%%%%%%%%%%%%%%%?@@,,,,,,,,,,,,,,,,,,,, 33. ...................@.;;;S@@S@@@@S%??????????????????%@@@@@@+,,,,,,,,,,,,,,,,,,,, 34. ..................S@....;;@@@@%SSS##@@@@@@@@@@@@@@@@@@:@@%S@@,,,,,,,,,,,,,,,,,,, 35. ..................@S@@#..;#@%@@::@%????????????@:+@@;.@@%%SSS@*,,,,,,,,,,,,,,,,, 36. .................@S%%SS@,.;@@%%%?%@@?:%@#S#S.,*@%%@@.:@%%%%%SS@@..,,,,,,,,,,,,,, 37. ................@S%%%%%%@,.@@%%?????????#:.#@???%%@,.@#%%%%%%SS@@....,,,,,,,,,,, 38. ................#S%%%%%%%@.S@@%%?????????:@????%%@@.:@%%%%%%%%SS@?......,,,,,,,, 39. ...............#SS%%%%%%%@:;@@%%???????@:,:::??%%@@.:@%%%%%%%%%SS@........,,,,,, 40. ...............@S%%%%%%%%S@.@@%%??????%,.::..%?%%@@,:@%%%%%%%%%SS@?..........,,,
1. ::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2. :::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3. :::::::::::::::::::.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4. ::::::::::::::::::::::.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5. :::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6. :::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 7. ::::::::::::::::::::::::::::::.,,,,,,,,,,,,,,,,,@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,, 8. ::::::::::::::::::::::::::::::,,,,,,@@@@@@@,,,@@@*;;;;;;*@@@@S,,,,,,,,,,,,,,,,,, 9. :::::::::::::::::::::::::::::::@@@@@@;;;;+@@@@@;;..:,:::,..;;@@@@,,,,,,,,,,,,,,, 10. :::::::::::::::::::::::::::S@@@@+;;;;;;.....;.,:..::::::::::;;*+@@@?,,,,,,,,,,,, 11. ::::::::::::::::::::::::#@@@%++;;+++*+:::,..:@@;.;@@@;;;:,,::::;;+S@@@,,,,,,,,,, 12. :::::::::::::::::::::;@@@**.,+*++:::,:,:::;;@@*+@@@*@@@@;;;;:::,.;;+*@@@,,,,,,,, 13. :::::::::::::::::::@@@@+;.:*++::.::;;;;::;;@@?@@@@@@@@@@@@*;;.,:::.;;+*@@@.,,,,, 14. :::::::::::::::::@@@%+.,;++*:::.:**;;:,::;;@@@@@%+**+****@@S+;.@@?:,.;;**@@.,,,, 15. ,::::::::::::::S@@%*.;;;:+,,,:.;*+;;:,*+;;@@#***+:::::+***@@@+;;@@@:,.;;++@@*,,, 16. ,,,:::::::::::@@@*,,;;.:?@@;;.:+*;;;::++;;@@;++:::::::::*+*@@#+;;?@@::.;;+*@@,,, 17. ,,,,,,:::::::@@+;.;;;.,:@@;;,:++;;;.,:*;;;@@S%#@@@#:::::::#@@@*.;;+@@::.;;*+@@,, 18. ,,,,,,,,,::+@@*;,;;*:.:@@;;:.**;;;.::+*;;;@@;;....S@@:::@@@;@@#+.;;*@@::,;;+@@@, 19. ,,,,,,,,,,,@@+;@@#++.,,@@*;.,**;;:,:,;;;;+@@;;......@@%@@..;*@@@@@@+*@@:::;;;@@, 20. ,,,,,,,,,,S@@;:@@;++.:;@@*;.;*;;;.::;@@;;;@@;...@@@@.@@@....;;;;@@@@@@@@;;+;;@@, 21. ,,,,,,,,,,,,@@@@@;*+.:%@@+;.**;;@@,;;*@@@@@@;..@@@@@:@@@.......@@@@@;?@@*;+*;@@, 22. ,,,,,,,,,,,,,,:@@;++::S@@+;:++;#@@#@@@@;;S@@;;..#@@..@@@........@@@.;@@@@@+*@@,, 23. ,,,,,,,,,,,,,,+@@;++;;+@@*;::;;@@@@**+@@@..;;;......@@+@@,.........@@@***@@@@,,, 24. ,,,,,,,,,,,,,,,@@*@@@@@@@*;;;;;#@@%%*:::@@@,.....+@@@@@@@@@@....?@@@:????#@?,,,, 25. ,,,,,,,,,,,,,,,S@@S@@**@@@@@@@@@@@%%?:::::,@@@@@@@*+;;;;;+;#@@@@;::;??????@@,,,, 26. ,,,,,,,,,,,,,,@@@@@@@;;%%%%%%%%%%%???;::::::::@@;;;;;;;;;;;;;%@%:::???????@@,,,, 27. ,,,,,,,,@@@@@#***??@@;;*?????????????:::::::::@@;++;+;;;+;++@@@@::;??????S@@,,,, 28. ,,,,,@@@S*********??@@;;?????????????:;;;;;;::@@@@@@@@@@@@@#;@@::::?????*@@,,,,, 29. ,,,@@@**@@@@@@@@@@@@@@@;;+?????????;;;;;;;;;;;;;@@@;;;;;;;;@@@:::::;????@@,,,,,, 30. ,:@@****************??@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@S;;;:::::::?@@@::,,,,, 31. +@@@@@@?************?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@:::::,, 32. @@*****@@@@@@#******?@@@@@@@###########################@@@@@@@@@@######@@@@@:::: 33. @*************#@@@@@?@@@#####################@@@@@@@@@@##########@@@@@@@@@@::::: 34. @*******************@@@@@@@@@##########@@@@@@@@@@@@@@@@@@@@@@@########@@@@:::::: 35. @*******************?@:::,,,,,,:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*,,,,,@:::::: 36. @@@@@@@@@@%*********?@@@@@@@;:;,,,?@####@@@@@@@@@@@@@@@@@@@@@@@@#,,:::@@@@:::::: 37. @*********#@@@@****???@@###@@@@%:,,@@;:::;S############;:::;?#@,,:;@@@@#@@#::::: 38. @@************#@@#*??#@#######@@@;,,@#########*::;;@@@#######@,,:@@@#####@@#:::: 39. ,@@**************@@@?@@########@@:,,@##########;::;;@########@,,;@@#######@@*::: 40. ,,@@***************@@@@########@@:,,@##########,,,,.;########@,,:@@########@@:::