【AA】【搞笑】用ASCII ART (AA画) 来批量全损压缩漫画
本帖最后由 冰箱研会长 于 2020-5-16 17:39 编辑更新:安装wkhtmltoimage 全自动出图 不需要截图了2333
一些必须写在前面的话
本篇教程 (如果这种垃圾帖子也可以成为教程的话), 除了扯淡以外无任何意义.
我对AA的了解属于浅尝辄止, 不排除已经有更先进, 更性能, 成品质量更稳定的方法存在
(因为我查都没查所以不知道有没有)
虽然结果大概率上不尽人意, 但如果它能给像我一样无法返校的人提供个消遣的话, 也不算完全的失败.
所以归根结底, 我还是希望各位能以轻松的心情看待本帖.
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516111251.png
什么? 你问为什么明明都有AA了还要发图片? 因为S1的有每行最大字符限制, 而我做出来的AA都超限了....
那么从现在开始切入主题
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516111855.png
要从一张图片制作出AA, 共有两个步骤:
1. 图像预处理
2. 像素符号映射
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516112646.JPG
一这张图片作为原图为例, 如果我们不首先进行处理, 直接符号映射会得到什么结果呢?
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516112017.png
嗯...很糟糕了.
华语作豚领袖nbht在点评 "普罗米亚" 的时候说过 "我们看动画.....看的是线条....不是色块...." (引用了名人名言)
先不论这句话在动画领域正确与否, 在AA画里, 我是觉得线条更为重要的.
同时, 因为AA原生就是不存在颜色的一种形式, 对于映射过程而言, 色块及其颜色都是一种干扰.
学习过素描的人可能知道, "画的真好, 像照片一样" 的前提是形准和阴影准, 那么我们在进行映射之前, 首先就是要提取出图像的线条和阴影信息.
要实现这个任务, 我们有很多的工具可以选择, 这里就找来人民的好朋友----老马制作的Comic Enhancer Pro
**** Hidden Message *****
这里提供老马一系列原创软件的链接, 积分不够的话可以直接百度前往老马的博客.
因为老马随软件提供了非常详细的教程, 对于软件的具体操作这里不会说的特别详细.
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113054.png
直接纯黑白, 简单拿出线和阴影:
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113120.png
点击批量处理, 自动调用同一套设置
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113226.png
处理结束之后,进入映射部分.
这里我们主要的映射部分使用Python, 搭配Powershell实现批量处理.
代码如下:
function asctrans($tpath,$sformat,$hscale,$wscale)
{
$pythonblock=@"
from PIL import Image
import os
import sys
filepath = sys.argv
heightarg = sys.argv
widtharg = sys.argv
CODE_LIB = r"B8&WM#YXQO{}[]()I1i!pao;:,. "
count = len(CODE_LIB)
def transform_ascii(image_file):
image_file = image_file.convert("L")
code_pic = ''
for h in range(0,image_file.size):
for w in range(0,image_file.size):
gray = image_file.getpixel((w,h))
code_pic = code_pic + CODE_LIB
code_pic = code_pic + "\n"
return code_pic
def convert_image(inputfilepath,heightratio,weightration):
heightratio=float(heightratio)
weightration=float(weightration)
image_file = Image.open(inputfilepath)
image_file=image_file.resize((int(image_file.size*weightration), int(image_file.size*heightratio)))
trans_data = transform_ascii(image_file)
print(trans_data)
convert_image(filepath,heightarg,widtharg)
"@
Write-Output $pythonblock >> "$($tpath)\asc.py"
Get-ChildItem -recurse -LiteralPath $tpath -include *.$sformat | ForEach-Object{
python "$($tpath)\asc.py" $_.FullName $hscale $wscale > "$($_.Directory)\$($_.Basename).txt"
}
}这段powershell的本质就是把所有python代码创建成一个字符串变量, 然后再目标目录位置创建python脚本并批量执行.
各位可以按需改动.
例子如下:
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113515.png
各位可以在
https://github.com/GrandArth/Risi-Pwsh-Profile
找到我的配置文件.
至于如何使用配置文件, 参见这个帖子的回复.
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113958.png这里我建议各位使用Powershell 7.0及以上, 因为有些特性很可能无法在老powershell中实现.
这个函数总共接受4个参数, 目标文件夹位置, 目标文件类型 ,高度缩放, 宽度缩放.
根据你电脑对"空格"的渲染设置的不同, 你可能需要对后两个参数进行多次调试才能拿到比较好的效果.
在我这里, 两者为1:2的时候效果比较好.
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516113934.png
那这篇垃圾帖子到这里就结束了, 希望大家早日开学上班(这是人话吗), 再也不用看我发的kuso帖子.
漫画转ASCII是怎么回事呢?漫画相信大家都很熟悉,但是漫画转ASCII是怎么回事呢,下面就让小编带大家一起了解吧。
漫画转ASCII,其实就是用符号表示图像,大家可能会很惊讶漫画怎么会转ASCII呢?但事实就是这样,小编也感到非常惊讶。
这就是关于漫画转ASCII的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!
本帖最后由 冰箱研会长 于 2020-5-16 12:21 编辑
更新一下压缩前后体积对比:
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516121737.png
一张3m的猫娘图https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516121758.png
压缩完了之后变成了18mbhttps://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516121823.png
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516121845.png
众所周知, 图像体积当然是越大越好.
而且我们打开来看看, 可以看到几乎没有肉眼可见的损失
反向压缩,最为致命 冰箱研会长 发表于 2020-5-16 12:19
更新一下压缩前后体积对比:
一张3m的猫娘图
别的不说,这猫娘我射了 猫娘的转换后效果图呢? 王留美 发表于 2020-5-16 13:19
猫娘的转换后效果图呢?
https://gitee.com/Arxher/Risiamu-Picture/raw/master/wikifiles/20200516133703.png 因为mpv依赖,我一般用caca。 本帖最后由 冰箱研会长 于 2020-5-16 15:18 编辑
linux40 发表于 2020-5-16 15:07
因为mpv依赖,我一般用caca。
Libcaca! 好东西 终端播视频还是很炫酷的 我记得ffpemg配套的ffplay也用caca库
哎 不过想生成能用的AA的话, 果然还是得分块做边缘检测... 不知道有没有人做
页:
[1]