java實現(xiàn)圖片轉(zhuǎn)ascii字符畫的方法示例
最近抖音上挺火的一個小把戲,在記事本打開,一整篇的亂碼字符,然后進過調(diào)整之后,出現(xiàn)一張由各種字符組成的黑白照片。先看一個效果圖
效果如下:


實現(xiàn)原理:
將圖片分解為像素點然后計算出每個點的灰度值,根據(jù)不同的灰度用不同的字符填充.
具體代碼:
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 AsciiPic {
/**
* @param path
* 圖片路徑
*/
public static void createAsciiPic(final String path) {
final String base = "@#&$%*o!;.";// 字符串由復(fù)雜到簡單
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");
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼
本文主要介紹了SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
利用Java的Struts框架實現(xiàn)電子郵件發(fā)送功能
這篇文章主要介紹了利用Java的Struts框架實現(xiàn)電子郵件發(fā)送功能,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
Springboot如何基于assembly服務(wù)化實現(xiàn)打包
這篇文章主要介紹了Springboot如何基于assembly服務(wù)化實現(xiàn)打包,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
java selenium Selenium IDE介紹及用法
本文主要介紹java selenium Selenium IDE,這里整理了相關(guān)資料和介紹如何安裝 Selenium IDE和使用方法,有需要的小伙伴可以參考下2016-08-08
Spring boot實現(xiàn)一個簡單的ioc(2)
這篇文章主要為大家詳細介紹了Spring boot實現(xiàn)一個簡單ioc的第二篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04

