当前位置:  开发笔记 > 编程语言 > 正文

使用pyCairo旋转图像

如何解决《使用pyCairo旋转图像》经验,为你挑选了1个好方法。

我无法理解如何使用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)

输出图像与初始图像相同.我错过了什么?



1> Frodon..:

有两个问题:

    您必须使用cairo.ImageSurface实例来编写新图像:

    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
    context = cairo.Context(surface)
    (...)
    surface.write_to_png(output_path)
    

    您必须切换说明context.scalecontext.translate:

    context.translate(width*0.5, -height*0.5)
    context.scale(1.0, 1.0)
    

顺便说一下,应重新计算新图像的宽度和高度.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有