好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java实现图片转ascii字符画的方法示例

最近抖音上挺火的一个小把戏,在记事本打开,一整篇的乱码字符,然后进过调整之后,出现一张由各种字符组成的黑白照片。先看一个效果图

效果如下:

实现原理:

将 图片 分解为像素点然后计算出每个点的灰度值,根据不同的灰度用不同的字符填充.

具体代码:

?

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

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

package com.dongge;

 

import java.awt.image.bufferedimage;

import java.io.file;

import java.io.ioexception;

 

import javax.imageio.imageio;

 

/**

  * @author 东哥 2016年10月27日

  *

  */

public class ascii pic {

 

  /**

  * @param path

  *      图片路径

  */

  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();

  }

  }

 

  /**

  * test

  *

  * @param args

  */

  public static void main( final string[] args) {

  asciipic.createasciipic( "d:\\20161027095850.png" );

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/renhd_1987/article/details/52948978

查看更多关于java实现图片转ascii字符画的方法示例的详细内容...

  阅读:37次