我有一个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()
答案 0 :(得分:0)
你根本不应该缩放pixbuf。
相反,你应该缩放对象(pixbuf原样)。
看起来像这样:
cr.save()
cr.scale(scale_xy, scale_xy)
cr.xxx_place_image(...)
cr.restore()
答案 1 :(得分:0)
如何使用PDF命令重新创建此特定图像?它是矢量格式,您可以在svg中设计相似的图像并导入它。图像缩放是丢失实际颜色数据的致命过程,导致近似发生。例如,使用高级缩放算法,Lanczos过滤。