先来一张看看效果(所用图片分辨率50x42)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #@@@@@@& ;*$&$$$$$$$*! $@@@@@@@@@@@$; *&! $@@@@@@@* o@@@@@@@@@@* ;@@@@@@@@@@. *@@@@@@@@# o@@@@@@@@& o@@@@@@@* .$#*. !o$oo. o@@@@@@@# *@@@@@. !o$o.o*$; !o! ;&! o@@@@@@$ .#@@o %@##@oo .!#%@&o;. *@@@@& % ;!o;;!; ;o!.!!. &$! $ ;o; . .% %; .!; . $ .$ ;!. .$@$##o ! %. #! !o..;!. .;. o* &@# . .@... !;!!o*%!.. ;@% &@@@; .@@@@@@@#$&. ; ;@@# &@@@@ . ; *@@@# &@@@@@o !o!!;. .@#@@@# &@@@@#@@o #@@@@@@@* &@@@@@@@@@#! !#@@@@@@@@@o &@@@@@@@@@@@@@%o. ;*#@@@@@@@@@@@@@@o &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*
|
实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
public static void createAsciiPic(final String path) { final String base = "@#&$%*o!;."; try { final BufferedImage image = ImageIO.read(new File(path)); for (int y = 0; y < image.getHeight(); y += 2) { for (int x = 0; x < image.getWidth(); x++) { final int pixel = image.getRGB(x, y); final int r = (pixel & 0xff0000) >> 16, g = (pixel & 0xff00) >> 8, b = pixel & 0xff; final float gray = 0.299f * r + 0.578f * g + 0.114f * b; final int index = Math.round(gray * (base.length() + 1) / 255); System.out.print(index >= base.length() ? " " : String.valueOf(base.charAt(index))); } System.out.println(); } } catch (final IOException e) { e.printStackTrace(); } } public static void main(String[] args) { createAsciiPic("D:/1.jpg"); }
|
无意搜到支持转gif的,果断收藏
GitHub:https://github.com/korhner/asciimg
MyGitHubFork:https://github.com/RuMengRen/asciimg