生活随笔
收集整理的這篇文章主要介紹了
java图片转ascii字符画(转载)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
弄了一下午,始終不能得到較好的效果
主要是計算灰度值,再計算出對應字符
灰度值計算方法:
效果:
原圖:
代碼
package com
.j
;import com
.sun
.jndi
.toolkit
.url
.UrlUtil
;import javax
.imageio
.ImageIO
;
import java
.awt
.image
.BufferedImage
;
import java
.io
.BufferedWriter
;
import java
.io
.File
;
import java
.io
.FileWriter
;
import java
.io
.IOException
;
import java
.net
.URI
;
import java
.util
.Scanner
;
public class ImgAscii {static char[] ascii
= "@#&$%*o!;.".toCharArray();static String staticUrl
= "C:\\Users\\Administrator\\Desktop\\";public static void main(String
[] args
) {for (int i
= 0; i
< 10; i
++) {Scanner scanner
= new Scanner(System
.in
);System
.out
.println("輸入對應路徑:");String Url
= scanner
.next();deal(Url
);System
.out
.println("判斷成功");}}public static void deal(String Url
) {BufferedImage image
= null
;try {image
= ImageIO
.read(new File(staticUrl
+ Url
));StringBuilder stringBuilder
= new StringBuilder("");for (int i
= 0; i
< image
.getHeight(); i
+= 2) {for (int j
= 0; j
< image
.getWidth(); j
+= 1) {final int rgbpx
= image
.getRGB(j
, i
);final int r
= (rgbpx
& 0xff0000) >> 16, g
= (rgbpx
& 0xff00) >> 8, b
= (rgbpx
& 0xff);final float grey
= r
* 0.299f + g
* 0.587f + b
* 0.114f;final int index
= Math
.round(grey
* (ascii
.length
+ 1) / 255);if (index
>= ascii
.length
) {stringBuilder
.append(" ");} else {stringBuilder
.append(ascii
[index
]);}}stringBuilder
.append("\n");}File AscImg
= new File(System
.getProperty("user.dir") + "\\temp.txt");if (!AscImg
.exists()) {AscImg
.createNewFile();}FileWriter w
= new FileWriter(AscImg
);BufferedWriter writer
= new BufferedWriter(w
);writer
.write(stringBuilder
.toString());writer
.close();} catch (IOException e
) {e
.printStackTrace();}}
}
有點可遠觀,不可褻玩的感覺
總結
以上是生活随笔為你收集整理的java图片转ascii字符画(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。