马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hrpzcf 于 2021-9-23 19:55 编辑
虽然已经有很多大佬发过了,但是我还是要发
将图片转字符组成的图片,非转文本文件。
已更新至 0.2.2 版本:
makeImage函数新增关键字参数chars,自定义用于图像的字符;
新增两个函数grayscaleOf和sortByGrayscale,用于查询字符的等效灰度值,和按等效灰度值排序给出的字符串。
效果:
用法:
1. 先通过pip安装:py -m pip install imgtoch -i https://mirrors.cloud.tencent.com/pypi/simple
2.参数说明:from imgtoch import makeImage
makeImage(
"源图片路径",
"生成的图片保存路径", # 此路径应包括文件名
chars = None, # 包含用于图像的字符的字符串,字符数应大于 1,无需手动按等效灰度值排序
scale = 1, # 采集率,0 < scale <= 1,可省略
quality = 80, # 图片保存质量,大于 0 小于等于 100
fontPath = "字体路径", # 可省略
fontSize = 14, # 字体大小,仅指定字体路径时生效,可省略
horzSep = 2, # 字符横向间隔,可省略
vertSep = 2, # 字符纵向间隔,可省略
keepRatio=True, # 是否保持原比例。因字体高宽不一定相等,生成的图片高宽会变形,此项为 True 则抵消变形,可省略
keepSize=False, # 一个字符对应一个像素点,因字符有大小,所以生成的图片尺寸会变化,此项为 True 会将生成的图片缩放至原图尺寸,可省略
)
3. 实例 1:from imgtoch import makeImage
# 大图片尽量将 scale 设置的小些,否则生成的图片会比较大
# 字体大小 fontSize 也是影响最终生成的图片大小的因素之一
makeImage("1.jpg", "new.jpg", scale=0.2) # 图片 1.jpg 已在当前目录中
4. 实例 2:from imgtoch import *
# 获取字符'#'的等效灰度值
print(grayscaleOf("#")) # ('#', 170)
# 将给定字符串按等效灰度值排序
print(sortByGrayscale("H oa.:sjv@%^a'"))
# 结果:['H', '@', 'a', '%', 'a', 's', 'j', 'o', 'v', '^', ':', "'", '.', ' ']
# 其中'a'和'%'的等效灰度值应该是相等的所以出现了'%'被夹在两个'a'中间的问题
# 更具体的参数可以看 IDE 提示或者使用 help 函数
源代码:
[/hide]
完整项目结构见:https://gitee.com/hrpzcf/imgtoch
https://github.com/hrpzcf/imgtoch
小技巧 - 想要生成的图片中的字符能清晰可见:
参数scale不宜设置的过小,对于一般相片大小(如2976*3968)来说,0.2就还不错,1080*1920的照片则用0.3,效果也还可以;
其次要指定字体路径fontPath(不然字体大小不生效),将字体大小fontSize设置的大一点,比如36;
最后参数keepSize应设置为False,这样,最终生成的图片会非常大,但把图片放大后字符也一样清晰。
|