使用Python的PIL_Image实现填充文字到图像

本文介绍了如何使用Python PIL库将图片转换为灰度,并通过像素值将图像内容编码为文本文件,展示了从图片处理到字符映射的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

兴趣-Image

PIL有九种不同模式:

1: 1位像素,黑白,每字节一个像素存储
L: 8位像素,黑白
P: 8位像素,使用调色板映射到任何其他模式
RGB: 3x8位像素,真彩色
RGBA: 4x8位像素,带透明度掩模的真彩色
CMYK: 4x8位像素,分色
YCbCr: 3x8位像素,彩色视频格式
I: 32位有符号整数像素
F: 32位浮点像素

1. 导包
from PIL import Image
2. 选择图片并灰度处理
img=Image.open("image_file")
3.可以选择调整图片大小,可调可不调
height=100 //设置最大高度
img_width,img_height=img.size
width=int(1.8*height*img_width//img_height)
img=img.resize((width,height),Image.ANTIALIAS)=
img.convert('L') //灰度,还可以1 ,L/RGB 0(black) 255(white) RGBA P I...

4.提取灰度后的变成numpy array
img.show() //展示一下
pixels=np.array(img) //结果为0-256的width*heigh的二维数组
chars="MNHQ$OC?7>!:-;. " //填充字符,可以随便设置,最好索引越大字符越不明显,索引越小字符越明显
step=256//(len(chars)-1)
5.写入文件

    with open('imageTotxt.txt',mode='w+') as f:
        for i in range(height):
            result=''
            for j in range(width):
                try:
                    result+=chars[pixels[i][j]//step]
                except Exception:
                    print("error:"+str(pixels[i][j]//step))
            f.write(result+"\n")
完整代码
from PIL import Image
import numpy as np
if __name__ == "__main__":
    image_file='''d:\User\Pictures\\aliPan\\beng1.png'''
    height=100
    img=Image.open(image_file)
    img_width,img_height=img.size
    width=int(1.8*height*img_width//img_height)
    img=img.resize((width,height),Image.ANTIALIAS)
    imgs=img.convert('L')
    pixels=np.array(imgs)
    # imgs.show()
    print('type(pixels=',type(pixels))
    print(pixels.shape)
    print(pixels)
    chars="WRELOVYOU7C>!:-;. "
    N=len(chars)
    step=256//N
    with open('imageTotxt.txt',mode='w+') as f:
        for i in range(height):
            result=''
            for j in range(width):
                try:
                    result+=chars[pixels[i][j]//step]
                except Exception:
                    print("error:"+str(pixels[i][j]//step))
            f.write(result+"\n")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

厨 神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值