python发布代码图片_Python 制作代码缩略图展示

Python 制作代码缩略图展示(2020年12月5日)

制作背景

一天晚上,看着代码编辑工具VScode右上角的缩略图,sublime也有,忽然就想到:可以用python做一个代码文件读取功能,然后批量输出他们的缩略图,顺便看看不同语言缩略图上样子的不同。

效果展示

很多的html

C语言

java

python

js

css

html+css

源代码

# -*- encoding: utf-8 -*-

"""

代码文件转图片

2020年12月5日

by littlefean

"""

from PIL import Image

import os

def main():

fileTypeArray = ['.html', '.css', '.js', '.java', '.c', '.py']

fr = get_file(os.getcwd(), fileTypeArray)

print(fr)

j = 0

for i in fr:

j += 1

codeToImg(i).save(f"{j}.png")

def get_file(path, fileTypeArr):

"""

根据路径来获得某一个文件夹下所有的 fileTypeArr 类型文件,并将所有 对应文件放到列表中返回

:param fileTypeArr: 一个列表,存放文件后缀名,加点儿

:param path: 文件目录

:return: html 文件的列表,每个文件用路径字符串表示

"""

L = []

for root, dirs, files in os.walk(path):

for file in files:

if os.path.splitext(file)[1] in fileTypeArr:

if os.path.splitext(file)[0] != '__init__':

L.append(os.path.join(root, file))

return L

def codeToImg(codePath):

"""

输入一个代码文件的路径字符串,返回图片

:param codePath: 代码文件路径

:return: 图片

"""

charColor = {

' ': (0, 0, 0),

'\n': (0, 0, 0),

'\r': (0, 0, 0),

'[': (0, 200, 0),

']': (0, 200, 0),

'{': (0, 50, 200),

'}': (0, 50, 200),

'(': (200, 220, 10),

')': (200, 220, 10),

'

'>': (200, 100, 50),

'englishChar': (0, 255, 0),

'numberChar': (0, 255, 100),

'normalChar': (10, 255, 10),

}

try:

f = open(codePath, encoding="utf-8")

fArr = f.readlines()

except UnicodeDecodeError:

f = open(codePath)

fArr = f.readlines()

array = []

for i in range(len(fArr)):

array.append([])

for y in range(len(fArr)):

for char in fArr[y]:

if char == '\n':

break

elif char == ' ':

array[y].append(charColor[' '])

elif char == '\t':

for i in range(4):

array[y].append(charColor[' '])

else:

if char.isdigit():

array[y].append(charColor['numberChar'])

elif char.isalpha():

array[y].append(charColor['englishChar'])

else:

if char in charColor:

array[y].append(charColor[char])

else:

array[y].append(charColor['normalChar'])

im = Image.new('RGB', (getMaxLength(array) + 10, len(array) + 1), (0, 0, 0))

for y in range(len(array)):

for x in range(len(array[y])):

im.putpixel((x + 1, y + 1), array[y][x])

print(f"{codePath}, 已经图片化")

return im

def showImg(array):

im = Image.new('RGB', (getMaxLength(array) + 10, len(array)+1), (0, 0, 0))

for y in range(len(array)):

for x in range(len(array[y])):

if array[y][x] == 0:

im.putpixel((x+1, y+1), (25, 100, 25))

elif array[y][x] == 1:

im.putpixel((x+1, y+1), (0, 255, 0))

im.show()

def getMaxLength(array):

"""获取一个列表中子元素数量最多的那个子元素的子元素数量"""

numArr = []

maxNum = 1

for item in array:

numArr.append(len(item))

if len(numArr) != 0:

maxNum = max(numArr)

return maxNum

if __name__ == '__main__':

main()

使用方法

让该脚本放到一新建文件夹里,然后让所有的代码文件全部放到该文件夹下,不用一个一个摘出来,直接把整个项目文件夹放到该新建的文件夹内部即可。运行程序会在该文件夹下输出。

修改main函数里的 fileTypeArray 里的内容,可以对更多不同种类的代码进行缩略图转化。

发现与总结

我把所有学过的代码风格全部列举以下:

c语言的风格是这样的

xxxxxx

{

xxxxxx

{

xxxx

{

xxxx

}

xxxx

{

xxxx

}

}

xxxxxx

{

xxxx

{

xxxx

}

xxxx

{

xxxx

}

}

}

java和js的风格是

xxxxxx xx{

xxxxxxx xxx{

xxxx xxxxx xxxx{

xxxxxxxxxx xxxxxxxxx{

xxxxxxxx{

xxxxxx

}

xxxxxxxx{

xxxxxx

}

}

xxxxxxxxxx xxxxxxxxx{

xxxxxxxx{

xxxxxx

}

xxxxxxxx{

xxxxxx

}

}

}

}

}

python的风格是

xxx xxx:

xxxxxxxxxxx:

xxxxxxxxxx:

xxxxxxxxxxx:

xxxxxxxxxxx

xxxxxxxxxxx:

xxxxxxxxxxx

xxxxxxxxxx:

xxxxxxxxxxx:

xxxxxxxxxxx

xxxxxxxxxxx:

xxxxxxxxxxx

css的风格是

xxxxx {

xxxxxxxxxx

xxxxxxx

xxxxxxxxxx

xxxx

}

xxx xx {

xxxxxxxxxx

xxxxxxx

xxxxxxxxxx

xxxx

}

html风格是

xxxxxxxx

xxxxxxxx

xxxxxxxx

xxxxxxxx

我个人最喜欢python的紧凑和缩进风格。

其次是java的风格,喜欢java这样比C语言紧凑,但是它的大括号和这种写法导致了最下面要有一长长的括号链条,看着感觉很占空间的样子。

最不习惯的是C语言的风格,因为它实在是太零散了,但是这样设计的原因是能够结构化阅读和对齐,一块一块的更有逻辑性。

当然这些都只是个人看法。每一种语言都有它本身的习惯。我们应该尽量遵守不同语言的默认习惯。

程序待改进:生成的图片都太小了,每个像素点表示一个字符,只有放大看才能看清楚,因此需要增加可以设置缩放倍率的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用PIL库(Python Imaging Library)来批量缩略图片。PIL是Python中常用的图片处理库,提供了丰富的图像处理功能。 首先,我们需要安装PIL库。可以使用pip命令进行安装:pip install pillow 安装完成后,我们可以使用以下代码进行批量图片缩略: ``` from PIL import Image import os # 设置要缩略的图片文件夹路径 image_folder = '要缩略的图片文件夹路径' # 设置缩略图保存路径 save_folder = '缩略图保存路径' # 设置缩略图的宽度和高度 thumbnail_size = (100, 100) # 遍历图片文件夹下的所有图片文件 for file in os.listdir(image_folder): if file.endswith('.jpg') or file.endswith('.png'): # 只处理.jpg和.png格式的图片文件 # 打开图片 image = Image.open(os.path.join(image_folder, file)) # 生成缩略图 thumbnail = image.thumbnail(thumbnail_size) # 保存缩略图 thumbnail.save(os.path.join(save_folder, file)) ``` 在上述代码中,我们首先导入了PIL库的Image模块和os模块。然后,我们设置要缩略的图片文件夹路径、缩略图保存路径以及缩略图的宽度和高度。接下来,我们使用os模块的listdir()方法遍历图片文件夹下的所有图片文件,并判断文件格式是否为.jpg或.png,然后使用Image模块的open()方法打开每个图片文件。接着,我们使用thumbnail()方法生成缩略图,并使用save()方法保存缩略图到指定路径。 通过以上代码,我们就可以批量对指定文件夹下的图片进行缩略处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值