【问题标题】:Set pygame surface DPI设置pygame表面DPI
【发布时间】:2017-12-03 13:45:05
【问题描述】:

我正在从一个 numpy 数组在 pygame 表面上渲染 Mandelbrot 分形。

当我生成一个 10k 像素 * 10k 像素的图像并使用 pylab 将其保存在一个 1000dpi 的 10 * 10 英寸图像中时,我得到一个 10k 像素的图像,当 Windows 内置照片应用程序通过缩放调整显示它时,它渲染得非常好。 在 pygame 中,图像看起来很丑,尽管它以相同的大小显示:

我正在使用此代码:

pygame.init()
display = pygame.display.set_mode((1000, 1000))
surf = pygame.surfarray.make_surface(gimage)

surf = pygame.transform.rotate(surf, 90)
surf = pygame.transform.scale(surf, (1000, 1000))

如何设置 pygame 图像大小和调整 DPI?

【问题讨论】:

  • 阅读文档:scale 是“快速缩放操作”。还有smoothscale 使用不同的算法。也许它会给你更好的结果。
  • 您还可以使用PIL/Pillowresize() 进行不同的重采样方法。您也可以使用PIL/Pillow 显示它。
  • 所以我应该将 10k px 调整为 1k px,然后将其返回给 pygame ?我使用 pygame 是因为我可以使用键盘探索 Mandelbrot,设置边界和缩放属性。
  • Smoothscale 提供更好的结果。谢谢你。也许您应该将其添加为答案。
  • 尝试使用PIL/PillowCV2 调整图像大小,看看效果是否更好。昨天有问题how to use CV2 with PyGame

标签: python pygame


【解决方案1】:

scale() 是“快速缩放操作”,不使用重采样。
还有 smoothscale() 使用不同的算法。
也许它会给你更好的结果。

您还可以使用 PIL/Pillowresize() 和不同的重采样方法。

您也可以尝试使用CV2resize()
昨天有问题how to use CV2 with PyGame

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多