前言
发现个好玩的demo记录下:将代码块保存为图片。试了多次终于找到一个中文不乱码的。
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
from html2image import Html2Image
def save_code_as_image(code_text, file_path):
# 使用 Pygments 渲染代码为 HTML
lexer = PythonLexer()
formatter = HtmlFormatter(style='colorful', full=True, cssclass='code')
html_code = highlight(code_text, lexer, formatter)
# 将 HTML 转换为图片
# 这里直接处理图片转换,避免使用额外的库
hti = Html2Image()
hti.screenshot(html_str=html_code, save_as='temp.png', size=(768,824))
# 示例代码
code_text = """
if __name__ == "__main__":
# 配置Kafka管理客户端
topic = 'car_plate_mask'
admin_client = KafkaAdminClient(
bootstrap_servers=['127.0.0.1:9092'], # Kafka broker地址
client_id='test'
)
try:
# # 定义要创建的主题
topic_list = [NewTopic(name=topic, num_partitions=1, replication_factor=1)]
# 创建主题
admin_client.create_topics(new_topics=topic_list, validate_only=False)
print("主题创建成功")
except Exception as e:
traceback.print_exc()
# # 查询所有主题
topics = admin_client.list_topics()
print("所有主题:", topics)
# 初始化Redis
try:
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
except Exception as e:
traceback.print_exc()
# 配置Kafka生产者
producer = KafkaProducer(
bootstrap_servers=['127.0.0.1:9092'], # Kafka broker地址
value_serializer=lambda v: json.dumps(v).encode('utf-8') # 将消息序列化为JSON格式
)
# 配置Kafka消费者
consumer = KafkaConsumer(
topic, # 要消费的主题
bootstrap_servers=['127.0.0.1:9092'], # Kafka broker地址
auto_offset_reset='earliest', # 从最早的消息开始消费
enable_auto_commit=False, # 自动提交偏移量
group_id='test-group', # 消费者组ID
value_deserializer=lambda v: json.loads(v.decode('utf-8')) # 将消息反序列化为JSON格式
)
# 模型初始化后马上冲击运行三次将资源占用曲线加速到稳定运行状态
picurl_temp = "https://xxx.jpg"
color_temp = "-1"
for i in range(3):
try:
car_plate_mask(picurl_temp, color_temp)
logger.info("Model Init and Run!")
except:
logger.info("Model Init and NOT Run!")
p = Thread(target=task, args=())
p.start()
application.listen(8012)
tornado.ioloop.IOLoop.instance().start()
"""
# 保存代码为 PNG 文件
save_code_as_image(code_text, 'code_image.png')