如何在不损失质量的情况下缩小pixbuf图像?

时间:2013-07-03 17:42:39

标签: python cairo pixbuf

我有一个pixbuf图像,我想使用cairo将其保存为pdf。因为pixbuf太大,我想缩小它。我使用scale_simple方法。但是,缩放的结果变得模糊。以下是我拍摄的截图。实际图像位于右侧,左侧是来自pdf blur

的图像

你知道如何在不失去质量的情况下缩小pixbuf吗?以下是我的示例代码。

from gi.repository import GdkPixbuf, Gdk
import cairo

class gui():
    def __init__(self):
        pix = GdkPixbuf.Pixbuf.new_from_file('tux2.png')
        pix = pix.scale_simple(pix.get_width() / 3, pix.get_height() / 3, GdkPixbuf.InterpType.HYPER)
        ps = cairo.PDFSurface('pix.pdf', 500, 500)
        cr = cairo.Context(ps)
        Gdk.cairo_set_source_pixbuf(cr, pix, 0, 0)
        cr.paint()

if __name__ == '__main__':
    gui()

2 个答案:

答案 0 :(得分:0)

你根本不应该缩放pixbuf。

相反,你应该缩放对象(pixbuf原样)。

看起来像这样:

cr.save()
cr.scale(scale_xy, scale_xy)
cr.xxx_place_image(...)
cr.restore()

答案 1 :(得分:0)

如何使用PDF命令重新创建此特定图像?它是矢量格式,您可以在svg中设计相似的图像并导入它。图像缩放是丢失实际颜色数据的致命过程,导致近似发生。例如,使用高级缩放算法,Lanczos过滤。