python图片转字符画

python实现图片转字符画 get_str_img此函数用于遍历黑白图片的每一个像素点,并使用Image中的getpixel方法获得其r,g.b和alpha(并不是每个像素点都有)三个值。首先认清,一张图片是由一个一个像素点组成的,我们转换成字符画就需要将其每个像素点转换成合适的字符。get_new_img函数的作用是裁剪图片将其变为合适的尺寸,这样转换出来的字符画更接近真实。两种字符集我都使用过,在我的代码和测试图片下是方案一的字符集转换出来图片更加真实。字符画是一系列字符组合成的文本,看起来就像一幅画一样,如图1所示。 阅读详情

python图片转字符画

解析

from PIL import Image#从模块导入Image,导入需要的图像库

from PIL import ImageDraw#从模块导入ImageDraw,提供了图像对象的简单2D绘制

from PIL import ImageFont#从模块导入ImageFomt #定义了相同名称的类

import matplotlib.pyplot as plt#导入模块,创建别名,有命令风格的函数集合

import numpy as np#导入模块,创建别名 开源的数值计算扩展工具

import time#导入时间模块

def pic_to_words(srd_img_file_path, dst_img_file_path=None, scale=2, sample_step=3):#定义函数

​ start_time = int(time.time())#返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

​ # 读取图片信息

​ old_img = Image.open(srd_img_file_path)#读取图片

​ pix = old_img.load()#从文件句柄中打开文件,加载到Python的变量中

​ width = old_img.size[0]#得到图片尺寸

​ height = old_img.size[1]

​ print("width:%d, height:%d" % (width, height))

​ # 创建新图片

​ canvas = np.ndarray((height*scale, width*scale, 3), np.uint8)

​ canvas[:, :, :] = 255

​ new_image = Image.fromarray(canvas)#实现array到image的转换

​ draw = ImageDraw.Draw(new_image)#创建一个可以在给定图像上绘图的对象。

​ # 创建绘制对象

​ font = ImageFont.truetype("consola.ttf", 10, encoding="unic")#创建字体对象

​ char_table = list('520 ')#设置文字内容

​ # 开始绘制

​ pix_count = 0

​ table_len = len(char_table)#返回对象长度

​ for y in range(height):

​ for x in range(width):#遍历图片

​ if x % sample_step == 0 and y % sample_step == 0:

​ draw.text((x*scale, y*scale),

​ char_table[pix_count % table_len], pix[x, y], font)

​ pix_count += 1#一次加一

​ # 保存

​ if dst_img_file_path is not None:

​ new_image.save(dst_img_file_path)#进行图片保存

​ print("used time : %d second, pix_count : %d" %

​ ((int(time.time()) - start_time), pix_count))

​ print(pix_count)

​ new_image.show()#显示图片

INPUT = "C://Users/admin/shiyanlou/artistic.png"#输入图片

OUTPUT= "C://Users/admin/shiyanlou/output.jpg"#输出字符画

pic_to_words(INPUT,OUTPUT)#调用函数

示例输出字符画:
字符画

完整代码

from PIL import Image#从模块导入Image,导入需要的图像库
from PIL import ImageDraw#从模块导入ImageDraw,提供了图像对象的简单2D绘制
from PIL import ImageFont#从模块导入ImageFomt #定义了相同名称的类
import matplotlib.pyplot as plt#导入模块,创建别名,有命令风格的函数集合
import numpy as np#导入模块,创建别名   开源的数值计算扩展工具
import time#导入时间模块
def pic_to_words(srd_img_file_path, dst_img_file_path=None, scale=2, sample_step=3):#定义函数
    start_time = int(time.time())#返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
    # 读取图片信息
    old_img = Image.open(srd_img_file_path)#读取图片
    pix = old_img.load()#从文件句柄中打开文件,加载到Python的变量中
    width = old_img.size[0]#得到图片尺寸
    height = old_img.size[1]
    print("width:%d, height:%d" % (width, height))
    # 创建新图片
    canvas = np.ndarray((height*scale, width*scale, 3), np.uint8)
    canvas[:, :, :] = 255
    new_image = Image.fromarray(canvas)#实现array到image的转换
    draw = ImageDraw.Draw(new_image)#创建一个可以在给定图像上绘图的对象。
    # 创建绘制对象
    font = ImageFont.truetype("consola.ttf", 10, encoding="unic")#创建字体对象
    char_table = list('520 ')#设置文字内容

    # 开始绘制
    pix_count = 0
    table_len = len(char_table)#返回对象长度
    for y in range(height):
        for x in range(width):#遍历图片
            if x % sample_step == 0 and y % sample_step == 0:
                draw.text((x*scale, y*scale),
                          char_table[pix_count % table_len], pix[x, y], font)
                pix_count += 1#一次加一
    # 保存
    if dst_img_file_path is not None:
        new_image.save(dst_img_file_path)#进行图片保存

    print("used time : %d second, pix_count : %d" %
          ((int(time.time()) - start_time), pix_count))
    print(pix_count)
    new_image.show()#显示图片
INPUT = "C://Users/admin/shiyanlou/artistic.png"
OUTPUT= "C://Users/admin/shiyanlou/output.jpg"
pic_to_words(INPUT,OUTPUT)#调用函数

----------------------------------------------

附:Python制作二维码简易步骤

Python制作二维码简易步骤

附:Python爬取整本小说

Python爬取整本小说

附:Python爬天气预报

Python爬天气预报

附:Python爬取百度图片

Python爬取百度图片

附:python图片转字符画

python图片转字符画

Python实现图片转字符画 初学Python,在网上看到Python图片转字符画的教程,我也来尝试下。 首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python的一个图像处理库。想了解PIL的详细功能介绍,可参考PIL的官方文档(虽然我也没看过,不过还是贴上来):http://effbot.org/imagingbook/图片转字符画的关键思想是将图片的灰度 阅读详情

相关推荐

基于Python实现图片转字符画

Linux命令行操作Python基础pillow库的使用argparse库的使用。

神仙别闹的自留地 1336

【图像处理】图像像素随机化:雪花漫天飞

近来经常和心理系做实验,总是有各种“什么什么随机化,刺激的物理性质保持一样。。”的需求。之前做《去掩蔽》的实验时,有一套图片就是做的像素随机化,这是最简单的随机化了。当时图像只有两种像素,灰的和深灰的,而且深灰的比较少。 于是我就统计了深灰像素点的个数,然后在一张同样大的灰色图片中的随机位置洒深灰像素点。 int pix_count=0; for(int i=0;i<img_widt...

编程语言小筑 360

实现图片转字符画(Python)

本实验完整的参考代码可以通过以下命令下载获取: $ wget http://labfile.oss.aliyuncs.com/courses/370/ascii.py PIL 是一个 Python 图像处理库,是本课程使用的重要工具,使用下面的命令来安装 pillow(PIL)库: $ sudo pip3 install --upgrade pip $ sudo pip3 install pillow 然后在/home/shiyanlou/目录下创建ascii.py代码文件进行编辑: ...

FAWKE的博客 520

【图像处理】python-ImageDraw

ImageDraw 模块 ImageDraw模块是对Image对象进行简单的二维图像操作的模块。 1.  基本的模块导入,读入图片,画图:      import Image, ImageDraw im = Image.open(“test.jpg") draw = ImageDraw.Draw (im) 2. 在显示的图片中,输出文字: draw.text ((10

1983的专栏 7289

Python 图片转彩色字符画工具

参考网上的一些教程编写的一款功能简单的小工具,可以将图片转换为用字符代替的图画。可以修改 这一行ascii_char = list(“ABCDE”) # 所用字符列表,将里面的ABCDE修改成自己想要的字符。资源已打包,可自行下载。

白泽的博客 733

PySpark 本地开发环境搭建与实践

本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。

天冬忘忧的博客 3013

【Python 之ImageDraw】

工作中,常常要展示结果或内容给他人,内容可以是Picture, TXT, Excel。如何直观的表达/对比?借助Python 可以轻松实现,如Image ,ImageDraw,Difflib.本文仅仅简单介绍了Imagedraw的使用,更多的应用场景有待进一步发掘尝试。

wanshihoutou的博客 661

ArcGIS 10.4 Desktop安装步骤。

步骤 1 :安装 LicenseManager 有了安装包以后,我们进入安装包文件目录,如图所示,首先需要安装ArcGIS license manager,即点击打开图中红色框中exe文件。 PS:安装 LicenseManager,关于 License 的安装路径一般默认即可,因为很小的,装C 盘也无所谓了,当然了自己改了也可以的,但是不建议! 即便修改路径,建议只改盘符,不修改相对路径方式! 如:C:\Program Files (x86)\ArcGIS\License10.6 修改为 D:\.

IT爱好者 2万+

【python图像处理】几何图形的绘制与文字的绘制(ImageDraw类详解)

python PIL图像处理模块中的ImageDraw类支持各种几何图形的绘制和文本的绘制,如直线、椭圆、弧、弦、多边形以及文字等。

guduruyu的专栏 5万+

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 281

解决DevExpress汉化后不生效的5个常见问题及修复方法

本文详细解析了DevExpress汉化后不生效的5个常见问题及修复方法,包括汉化包部署位置验证、运行时缓存清除、权限与执行上下文排查、版本兼容性检测以及开发环境配置检查。通过实战案例和具体操作步骤,帮助开发者快速解决汉化失效问题,提升开发效率。

weixin_29232121的博客 261

python动态图片转字符画_python 图片在线转字符画预览

关于python图片转字符画,相信大家都不陌生,经常出现在 n个超有趣的python项目中。今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可以让更多的人来体验。体验网址:https://www.manjiexiang.cn/blog/post_img举个栗子,就是这是一张图片经过转换成的字符画是这样的,这个txt的文件代码部分:使用PIL处...

weixin_39936310的博客 111

Nvidia Jetson CH340 驱动安装

最近调一个USB设备,Windows系统上是可以安装CH340 驱动使用的,移到Jetson AGX Orin 上发现没有 /dev/ttyUSB* 设备显示。是一个为盲人和视力障碍者提供的终端设备驱动程序,它会在系统启动时自动加载并占用串口设备,导致我们无法正常使用部分串口设备。安装完后,内核中已经有。

Vulcan_S的博客 1639

python字符画的图怎么保存_Python 实现图片转字符画

图片转字符画(RGB转字符)首先必要的库:pillow库---图像处理库PILargparse库---管理命令行输入的库argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息使用方法:创建 ArgumentParser() 对象调用 add_argumen...

weixin_30210749的博客 707

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3515

AUTOSAR MCAL开发及EB Tresos工具使用总结

在基于AutoSar CP架构开发MCAL时,会使用到EB tresos工具。本文主要对MCAL开发及EB tresos工具使用进行总结,仅作为自学使用,以方便后续查漏补缺。

liuxu324的博客 2628

python生成的字符画怎么查看_Python实现图片转字符画的示例

字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画。但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢?转化方法:将彩色图片转化为灰度图根据颜色深浅的RGB值(值域从0到255,其中0为黑色,255为白色)涉及自己喜欢的字符集合根据字符集顺序及字符集长度,由RGB值编码为对应的字符。RGBRGB色彩模式是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互...

weixin_39861905的博客 162

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

1294

python3 image图片转字符画

from PIL import Image #导入PIL IMG='d.jpg' width=60 heigth=45 ascii_char=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") def get_char(r,g,b,alpha=256): ...

zwj的博客 461

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python:图片转字符画

字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画。但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值域从0到255,其中0为黑色,255为白色) 涉及自己喜欢的字符集合 根据字符集顺序及字符集长度,由RGB值编码为对应的字符。 RGB RGB色彩模式是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以...

weixin_45719624的博客 266

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python转字符图_python实现图片转字符画

python实现图片转字符画字符画,就是一系列字符的组合,组成的形状是一幅可识别的图画原理:每一张彩色的图片,之所以能够呈现出colorful或者dim的画面,是因为每一张图都由很多个像素点组成,而每一个像素点都有不同的颜色,而这个颜色就由三个值(rgb)对应三原色的百分比构成,所以每一个像素点都有三个值(rgb,范围0-255),我们可以将每一个像素点转换成一个字符来形成字符图画灰度值:指黑白图...

weixin_39711348的博客 188

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python实例题:Python 图片转字符画

Python 图片转字符画。

shangzhiqi的博客 580

如何用python制作字符图_如何利用Python实现图片转字符画详解

本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画。但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢?转化方法:将彩色图片转化为灰度图根据颜色深浅的RGB值(值域从0到255,其中0为黑色,255为白色)涉及自己喜欢的字符集合根据字符集顺序...

weixin_39821189的博客 554

python字符画代码_Python实现图片转字符画的示例代码

Python实现图片转字符画的示例代码初学Python,在网上看到Python图片转字符画的教程,我也来尝试下。首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python的一个图像处理库。图片转字符画的关键思想是将图片的灰度值与你自己设定的字符集之间建立映射关系,不同区间的灰度值对应不同的字符,之后将图片每一个像素对应的字符打印出来...

weixin_39860201的博客 288
上一篇: Python爬取百度图片
下一篇: HTML入门简介及内容介绍
、工藤新一
博客等级 码龄6年 1227粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、工藤新一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值