以给定字体对文本进行矢量旋转并渲染它(在Python中)

问题描述 投票:0回答:1

我想编写一个程序,可以提供字体路径、字符串和旋转角度,然后将(矢量)旋转文本呈现为 png。

我已经浏览了几个库,例如skia,cairo,PIL,matplotlib,svgwrite,...我一生都找不到真正有用的东西。他们中的大多数都使用光栅旋转,这是我不想要的。我认为我最接近 svgwrite,但无法加载自定义字体(而且总体来说很难使用)。

关于如何做到这一点有什么想法吗?

python fonts rotation rendering vector-graphics
1个回答
0
投票

我建议结合使用 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")
© www.soinside.com 2019 - 2024. All rights reserved.