首页Python【Python计算生态】a...

【Python计算生态】ascii_magic——ASCII艺术生成库

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

ascii_magic是一个Python第三方库,用于将图像转换为ASCII艺术字符画。它支持从多种来源加载图像(如本地文件、URLAI生成图像等),并提供灵活的转换和输出选项(如终端显示、HTML 文件、文本文件等)。
通过pip直接安装:
pip install ascii_magic
需确保已安装Pillow(用于图像处理)和Colorama(用于兼容Windows终端颜色支持)。
02
AsciiArt 类:

该模块的所有功能都包含在AsciiArt类中,并提供了一系列类方法(例如AsciiArt.from_image()),可以从文件、URL、剪贴板等不同来源加载图片,并返回AsciiArt对象。这些对象具有多种方法,可以从图片生成ASCII艺术作品。这些方法还可以通过参数调整显示效果。

为了方便使用,ascii_magic模块还提供了一些与上述类方法同名的函数,这些函数的功能完全相同。
例如,以下两种方式是等效的:
from ascii_magic import AsciiArt, from_image

# 方式一
my_art = AsciiArt.from_image('lion.jpg')
my_art.to_terminal()

# 方式二
my_art = from_image('lion.jpg')
my_art.to_terminal()

AsciiArt类本质上是对Pillow图像对象的封装。通过AsciiArt.image属性可以访问底层的Pillow对象,从而直接对其进行操作(如调整亮度、对比度等)

from ascii_magic import AsciiArt
from PIL import ImageEnhance

my_art = AsciiArt.from_image('lion.jpg')
# 调整图像亮度
my_art.image = ImageEnhance.Brightness(my_art.image).enhance(0.2)
my_art.to_terminal()
  • 1、图像加载方法:
支持从以下来源加载图像:
  • quick_test():

加载一张随机的Unsplash图片,并在终端打印,用于测试环境是否正常运行。

  • from_image():
从图片文件创建AsciiArt对象。
from_image(path: str) -> AsciiArt参数说明:path (str):与 Pillow 兼容的图片文件,例如 jpeg 或 png。
  • from_craiyon():
通过Craiyon(DALL-E Mini生成图片并创建AsciiArt对象。
from_craiyon(prompt: str) -> AsciiArt
参数说明:prompt (str):自然语言描述的图片内容。
  • from_dalle():
通过DALL-E生成图片并创建AsciiArt对象,需要DALL-E API密钥。
from_dalle(    prompt: str,    api_key: Optional[str]) -> AsciiArt
参数说明:prompt (str):自然语言描述的图片内容。api_key (str, optional):DALL-E API 密钥。
  • from_stable_diffusion():
通过Stable Diffusion生成图片并创建AsciiArt对象,需要Stable Diffusion API密钥。
from_stable_diffusion(    prompt: str,    api_key: str,    steps: int = 30,    engine: Optional[str],) -> AsciiArt
参数说明:prompt (str):自然语言描述的图片内容。api_key (str, optional):Stable Diffusion API 密钥。steps (int, optional):执行的推理步骤数量(请参阅 Stable Diffusion 文档)。engine (str, optional):设置用于生成的引擎(请参阅 Stable Diffusion 文档)
  • from_url():
URL创建AsciiArt对象。
如果在请求图片时出现问题,将引发urllib.error.URLError
from_url(url: str) -> AsciiArt
参数说明:url (str):将通过 urllib 加载的 URL(支持重定向)。
  • from_clipboard():
从剪贴板内容创建AsciiArt对象。
如果剪贴板中不包含图片,将引发OSError
from_clipboard() -> AsciiArt
  • from_pillow_image():
Pillow图像对象创建AsciiArt对象。
from_pillow_image(img: PIL.Image) -> AsciiArt
参数说明:img (obj):使用 Pillow 创建的图像对象。

  • 2、输出方法:
创建的AsciiArt对象具有多种方法,可以用来生成和显示ASCII艺术作品。所有这些方法都会返回一个字符串,其中一些方法还具有额外的功能:
  • to_ascii():
返回一个包含 ASCII 艺术的字符串,默认包含终端颜色控制字符,这些字符可以让大多数终端(也称为 shell)显示颜色。
AsciiArt.to_ascii(    columns: int = 120,    width_ratio: float = 2.2,    monochrome: bool = False,    char: Optional[str] = None,    front: Optional[Front] = None,    back: Optional[Back] = None) -> str
参数说明:columns (int, optional):每行的字符数,值越大,艺术作品越宽。width_ratio (float, optional):ASCII 字符不是正方形,因此此参数用于在生成过程中调整宽度与高度的比例。monochrome (bool, optional):如果设置为True,则禁用显示颜色的控制字符。char (str, optional):可以指定使用单一字符(如'#')代替多种 ASCII 字符。front (enum, optional):覆盖前景色,可选值包括:Front.BLACK、Front.RED、Front.GREEN、Front.YELLOW、Front.BLUE、Front.MAGENTA、Front.CYAN、Front.WHITE。back (enum, optional):设置背景色,可选值包括:Back.BLACK、Back.RED、Back.GREEN、Back.YELLOW、Back.BLUE、Back.MAGENTA、Back.CYAN、Back.WHITE。
  • to_terminal():
AsciiArt.to_ascii()完全相同,但它还会调用print()打印结果,为您节省了一行代码。
  • to_file():
AsciiArt.to_ascii()完全相同,但它还会将结果保存到文本文件。
AsciiArt.to_file(    path: str,    # ... 与 AsciiArt.to_ascii() 相同的参数) -> str
参数说明:path (str):输出文件路径。
  • to_html():
返回一个以HTML标记形式创建的ASCII艺术字符串。
接受与AsciiArt.to_ascii()相同的参数,但不包括backfront颜色。默认情况下,HTML ASCII艺术使用24位调色板(1600万种颜色)生成。
AsciiArt.to_html(    full_color: bool = True,    # ... 与 AsciiArt.to_ascii() 相同的参数,但不包括 back 和 front 颜色) -> str
参数说明:full_color(bool, optional):如果设置为False,则将调色板限制为8种颜色。
  • to_html_file():
AsciiArt.to_html()完全相同,但它还会将标记保存到一个简单的HTML文件中,该文件包含一个<pre>标签,并附带一些默认的CSS样式,可以在浏览器中打开。
AsciiArt.to_html_file(    path: str,    styles: str = '...',  # 请参阅以下描述    additional_styles: str = '',    auto_open: bool = False    # ... 与 AsciiArt.to_html() 相同的参数) -> str
参数说明:path (str):输出文件路径。styles (str, optional):一个字符串,包含<pre>元素的一组CSS样式,默认值如下:display: inline-block;border-width: 4px 6px;border-color: black;border-style: solid;background-color: black;font-size: 8px;additional_styles (str, optional):可以使用此参数添加您自己的 CSS 样式,而不会覆盖默认样式。auto_open (bool, optional):如果设置为True,则会使用webbrowser.open() 自动打开文件。

03
示例:

以下是一个简单的使用示例,本次测试图像如下:

代码:

from ascii_magic import AsciiArt
from PIL import ImageEnhance

# 从图片文件创建 AsciiArt 对象
my_art = AsciiArt.from_image('city.jpg')

# 访问底层的Pillow对象,调整图像亮度
my_art.image = ImageEnhance.Brightness(my_art.image).enhance(1.5)

# 将标记保存到一个简单的HTML文件中
# 并设置columns,width_ratio,char,additional_styles,auto_open参数
my_art.to_html_file('city.html', columns=300, width_ratio=3 , char='#' ,additional_styles='font-family: MonoLisa;', auto_open=True)

生成结果:


更多内容可以前往GitHub查看:

https://github.com/LeandroBarone/python-ascii_magic

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments