简单实现图片转彩色字符画
在上次的教程中,我们只是将图像转换为txt文本文件,而txt文本文件是没有颜色的。
在显示某些图片的时候,我们往往希望可以包含颜色信息。
这样图像便显得更加生动。
接下来我便教大家如何将图像转换字符画的时候,同时具有颜色,输出一幅带色彩的字符画。
以下是具体代码:
#-*- coding:utf-8 -*-
import os
from PIL import Image, ImageFont, ImageDraw
import argparse
#命令行输入参数处理
parser = argparse.ArgumentParser()
parser.add_argument('file')
parser.add_argument('-o','--output')#获取参数
args = parser.parse_args()
File = args.file
OUTPUT = args.outputascii_char = list("MNHQ$OC67)oa+>!:+. ")#将像素转换为ascii码
def get_char(r,g,b,alpha = 256):if alpha == 0:return ''length = len(ascii_char)gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)unit = (256.0+1)/lengthreturn ascii_char[int(gray/unit)]if __name__=='__main__':im = Image.open(File)WIDTH = int(im.width/6) #高度比例为原图的1/6较好,由于字体宽度HEIGHT = int(im.height/15) #高度比例为原图的1/15较好,由于字体高度im_txt = Image.new("RGB",(im.width,im.height),(255,255,255))im = im.resize((WIDTH,HEIGHT),Image.NEAREST)txt = ""colors = []for i in range(HEIGHT):for j in range(WIDTH):pixel = im.getpixel((j,i))colors.append((pixel[0],pixel[1],pixel[2]))#记录像素颜色信息if(len(pixel) == 4):txt += get_char(pixel[0],pixel[1],pixel[2],pixel[3])else:txt += get_char(pixel[0],pixel[1],pixel[2]) txt += '\n' colors.append((255,255,255))dr = ImageDraw.Draw(im_txt)font=ImageFont.load_default().font#获取字体x=y=0#获取字体的宽高font_w,font_h=font.getsize(txt[1])font_h *= 1.37 #调整后更佳#ImageDraw为每个ascii码进行上色for i in range(len(txt)):if(txt[i]=='\n'):x+=font_hy=-font_wdr.text([y,x],txt[i],colors[i])y+=font_w#输出im_txt.save("output.png")
要达成如上效果,一下几点很重要:
colors.append((pixel[0],pixel[1],pixel[2]))#记录像素颜色信息
同时这次使用ImageDraw为每个ascii码进行上色,同时将文本文件转换为图像进行输出:
for i in range(len(txt)):if(txt[i]=='\n'):x+=font_hy=-font_wdr.text((y,x),txt[i],font = font, fill = colors[i])y+=font_wim_txt.save("output.png")
在上述代码中,为了使画面达到预期的效果,需要对图像进行一定的调整:
WIDTH = int(im.width/6)
#高度比例为原图的1/6较好,由于字体宽度
HEIGHT = int(im.height/15)
#高度比例为原图的1/15较好,由于字体高度
font_h *= 1.37
#通过实际操作,这样调整后更佳
以下是具体效果:
以上代码使用后你会发现一个问题,它只可以转换静态图,如png,jpg,jpeg等,但是无法转换gif这类动态图。
下篇文章,我将教大家如何将gif图也同样的转换为字符画。
简单实现图片转彩色字符画相关推荐
- python动态图片转字符画_【小工具】使用python将图片转彩色字符画
[Python] 纯文本查看 复制代码# -*- coding:utf-8 -*- from PIL import Image, ImageFont, ImageDraw from tkinter i ...
- python学习之手把手教你将图片变成黑白或彩色字符画(骚操作)
文章目录 前言 一.字符画的实现原理 二.黑白字符画实现代码 三.彩色字符画生成 代码实现: 总结 前言 字符画这个话题,似乎早在贴吧时代就已经被玩烂了.在百度图片随便一搜索,就能够看到非常多.然后在 ...
- canvas全局合成画月牙_教你用Python将自己喜欢的图片转成字符画,居然还有动态的 - 松鼠爱吃饼干...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章一级Python技术 ,作者派森酱 前言 字符画是一种由字母,标点或其他字 ...
- 【云云怪】黑白/彩色字符画/字符视频,代码搜集
1,黑白字符画(原图可以不用太大): import cv2 import random import numpy as npdef img2strimg(frame, K=3):height, wid ...
- 教你用Python将图片转化为字符画!附源代码
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Whatever you are facing today, remem ...
- python动态图片转字符画_python 图片在线转字符画预览
关于python图片转字符画,相信大家都不陌生,经常出现在 n个超有趣的python项目中. 今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可 ...
- c语言将一幅画转换为字符画,C#将图片转换成字符画
先看一下效果图 在Main方法中调用(首先要添加程序集System.Drawing,然后引入命名空间System.Drawing) ConvertToChar(new Bitmap(@"D: ...
- python动态图片转字符画_使用python实现一个将图片转换成字符画的功能
使用python实现一个将图片转换成字符画的功能 发布时间:2020-11-05 16:01:25 来源:亿速云 阅读:97 使用python实现一个将图片转换成字符画的功能?针对这个问题,这篇文章详 ...
- 实现图片转换成字符画
python小程序:实现图片转换成字符画 看到网上有很多这样的小程序,自己动手做一个 内附详细说明~ 先附上效果图 部分解释 运行平台: Win10 Python版本: Python3.9 IDE: ...
- python将图片转为字符_Python将图片转化为字符画
简介 最近发现一个有趣的操作, 将一张图片转化为字符串的模式来显示! 如图 准备 首先需要安装一个CV模块用来导入图片的#pip install opencv-python 然后明确下程序的设计思路1 ...
最新文章
- 2021-05-10 Matlab短时傅里叶变换和小波变换的时频分析
- android生成png图片,Android 中将 base64图片 解码为.png图片
- 信息安全官谁:逼近的挑战,你准备好了吗?
- 云计算(cloud computing)十大问答
- 教育部计算机考研大纲,2018考研大纲从哪里看?
- Java私塾的一些基础练习题(一)
- 架构解密从分布式到微服务:微服务架构到底是什么?
- MySQL数据类型中的二进制类型有_在MySQL数据类型中,常用的数据类型有()。A.()数值类型()B.()字符串类型()C.()日期时间类型()D.()二进制类型...
- .Net Framework System.Collections 集合类
- 上海内推 | 上海人工智能实验室招聘计算视觉实习生(NeRF神经渲染方向)
- matlab 人群疏散,建筑物内的人员数量确定方法和人群疏散方法
- 23王道——建立中序线索树,找前驱后继,并用其遍历
- 对嵌入式开发方向的一些思考:在物联网方向
- 让世界不再有“此生未完成”,臻和科技为患者带来守护之力
- 【概念】区块链中账本是什么?通用区块链平台账本概念介绍,一个谁都能看懂的账本概念
- 奇偶数求和:输入任意个正整数(以输入负数表示结束输入),分别求出所有的奇数之和,所有的偶数之和。 示例: 输入格式:1 2 3 4 -1 输出格式:sumodd=4 sumeven=
- 138 - 打球过程
- html表格标题中副标题,excel数据表格制作副标题-如何在excel图表中添加标题?
- 腾讯产品18讲10:把握产品需求的管理节奏
- 类似于语雀、石墨文档私有化部署开源代替品,你尝试了吗?