【发布时间】:2013-07-03 17:42:38
【问题描述】:
我有一个 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()
【问题讨论】:
-
当您缩小(位图)图像时,除非同时增加其 dpi,否则您总是会损失质量。没有办法解决这个问题。一张 200x200 的图像只有 300x300 图像的 4/9 的信息,而且你不能在不损失质量的情况下丢弃 55% 的信息。平均、模糊、抖动和其他技术是试图使损失不那么明显;它们都有明显的副作用,但不使用它们的副作用更明显。
-
我相信问题完全在于增加 dpi,因为输出是 PDF,本质上是一种矢量格式。