我无法理解如何使用pyCairo简单地旋转图像......
基于这个例子,这就是我所做的:
image_surface = cairo.ImageSurface.create_from_png(image_path) width = image_surface.get_width() height = image_surface.get_height() context = cairo.Context(cairo.ImageSurface (cairo.FORMAT_ARGB32, width, height)) context.translate(width*0.5, height*0.5) context.rotate(45.0*math.pi/180.0) context.scale(1.0, 1.0) context.translate(-width*0.5, -height*0.5) context.set_source_surface(image_surface, 0, 0) context.paint() image_surface.write_to_png(output_path)
输出图像与初始图像相同.我错过了什么?
有两个问题:
您必须使用cairo.ImageSurface
实例来编写新图像:
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) context = cairo.Context(surface) (...) surface.write_to_png(output_path)
您必须切换说明context.scale
并context.translate
:
context.translate(width*0.5, -height*0.5) context.scale(1.0, 1.0)
顺便说一下,应重新计算新图像的宽度和高度.