我想编写一个程序,可以提供字体路径、字符串和旋转角度,然后将(矢量)旋转文本呈现为 png。
我已经浏览了几个库,例如skia,cairo,PIL,matplotlib,svgwrite,...我一生都找不到真正有用的东西。他们中的大多数都使用光栅旋转,这是我不想要的。我认为我最接近 svgwrite,但无法加载自定义字体(而且总体来说很难使用)。
关于如何做到这一点有什么想法吗?
我建议结合使用 Python 库 Cairo 和 Pango。
你对这个例子有什么看法?
import cairo
import gi
gi.require_version('Pango', '1.0')
gi.require_version('PangoCairo', '1.0')
from gi.repository import Pango, PangoCairo
def render_text_to_png(font_path, text, angle, output_file):
# Set up a Cairo surface and context
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 800, 600)
context = cairo.Context(surface)
# Create a Pango layout and context
layout = PangoCairo.create_layout(context)
pango_context = layout.get_context()
# Load the custom font
font = Pango.FontDescription.from_string(font_path)
layout.set_font_description(font)
# Set the text and rotation
layout.set_text(text, -1)
context.rotate(angle * (3.14159 / 180)) # Convert angle to radians
# Render the text
PangoCairo.update_layout(context, layout)
PangoCairo.show_layout(context, layout)
# Save to PNG
surface.write_to_png(output_file)
# Example usage
render_text_to_png("Arial 12", "Hello, World!", 45, "output.png")