2

我有一个 pixbuf 图像,我想使用 cairo 将其保存为 pdf。因为pixbuf太大了,我想按比例缩小。我用scale_simple方法。但是,缩放的结果变得模糊。下面是我截取的截图。真实图像在右侧,左侧是pdf中的图像模糊

你知道如何在不损失质量的情况下缩小 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()
4

2 回答 2

0

您根本不应该缩放 pixbuf。

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

它看起来像这样:

cr.save()
cr.scale(scale_xy, scale_xy)
cr.xxx_place_image(...)
cr.restore()
于 2013-07-03T19:19:59.543 回答
0

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

于 2013-07-03T20:12:02.153 回答