python程序8:写一个字符画生成程序2.0

打算写一个有美观GUI界面的字符画程序,目前bug还没解决,暂时在这加个书签。由于写这个程序需要的模块比较多,通过pip freeze > requirements.txt 已将所有模块及版本输出到txt文本中

通过命令:pip install -r requirements.txt

批量导入所用到的模块及版本。

下面是程序源码:

import streamlit as st
from PIL import Image
import requests
from io import BytesIO
import pyfiglet
# 设置页面标题
st.set_page_config(page_title="图片转字符画", page_icon=":art:", layout="wide")

# 设置页面布局
col1, col2 = st.beta_columns([1, 3])
with col1:
    st.write("")
with col2:
    st.title("图片转字符画")
# 上传图片
uploaded_file = st.file_uploader("上传图片", type=["jpg", "jpeg", "png"])
# 图片转字符画
if uploaded_file is not None:
    # 显示原始图像
    st.subheader("原始图像")
    image = Image.open(uploaded_file)
    st.image(image, caption="原始图像", use_column_width=True)
    # 将图像转换为字符画
    st.subheader("字符画")
    img_width, img_height = image.size
    aspect_ratio = img_height / img_width
    new_width = 100
    new_height = int(aspect_ratio * new_width * 0.55)
    image = image.resize((new_width, new_height))
    image = image.convert('L')
    pixels = image.getdata()
    chars = "".join([pyfiglet.figlet_format(pixel_to_char(pixel), font='big') for pixel in pixels])
    st.write(chars)

# 像素转字符
def pixel_to_char(pixel):
    char_list = [' ', '.', '*', ':', 'o', '&', '8', '#', '@']
    num_chars = len(char_list)
    gray = int(0.2126 * pixel[0] + 0.7152 * pixel[1] + 0.0722 * pixel[2])
    return char_list[int(gray / (255 / num_chars))]

因为用到了streamlit ,需要在终端界面输入命令:

streamlit run C:\Users\YOUR_NAME\PycharmProjects\pythonProject1\venv\Scripts\shiping.py

生成测试程序,查看。

我这里存在报错

AttributeError: module 'click' has no attribute 'get_args'

可能是click模块版本问题,测试多个版本

网上收不到解决办法,这个只能慢慢调试了,先这样。需要源码的同学私信联系我。

发表回复