【问题标题】:Why plt.savefig reduced the original size of an image?为什么 plt.savefig 减小了图像的原始大小?
【发布时间】:2021-02-09 22:47:04
【问题描述】:

我有以下问题。我想加载图像并在其上绘图。一切正常,但是当我保存最终图时,它的大小和质量似乎有所降低。你知道为什么吗?我需要 newimage.png 也是 1026 x 824px 并且具有与原始 img.png 相同的质量。

img = Image.open("./Python/img/img.png") #SIZE 1026 x 824px


fig, ax = plt.subplots()

ax.imshow(img, extent=[0, 1024, 0, 768])

x = [10, 300, 100, 400]
y = [100, 250, 450, 600]



plt.xlim(0, 1024)
plt.ylim(0, 768)

scatter = ax.scatter(x, y, s=100, alpha=1)

ax.invert_yaxis()

ax.imshow(img)

ax.xaxis.tick_top()

plt.savefig("./Python/img/newimage.png") #SIZE 432 x 288px
plt.show()

非常感谢!

【问题讨论】:

  • 一个 matplotlib 图形有一个英寸大小和一个 dpi。保存的图形像素大小是这两个数字相乘。它与图上绘制的数据大小无关。

标签: python matplotlib


【解决方案1】:

如果您阅读文档:https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.savefig.html 您将看到一个名为 quality 的参数,它是从 1 到 95 的标量,95 是最好的质量。还有另一个称为 dpi 的参数,它是以每英寸点数为单位的分辨率。我个人建议将此值设置为 300 左右。

你可以用这个:

plt.savefig('your-file.png', dpi=300, quality=95)

如果质量太大,您可以随时使用其他程序对其进行缩放。

【讨论】:

  • 质量参数仅与 jpeg 图像相关,否则将被忽略。
猜你喜欢
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2017-02-06
  • 2019-04-13
相关资源
最近更新 更多