在python中打开图像并以相同的分辨率和dpi重新保存
我正在学习一些使用python的非常基本的隐写术 到目前为止,我一直在使用以下方法打开文件:在python中打开图像并以相同的分辨率和dpi重新保存,python,image,matplotlib,Python,Image,Matplotlib,我正在学习一些使用python的非常基本的隐写术 到目前为止,我一直在使用以下方法打开文件: from matplotlib import pyplot as plt import numpy as np file_location = '...'.png rgb_data = np.array(plt.imread(file_location)) ... manually or otherwise edit some RGB values ... plt.axis('off') plt
from matplotlib import pyplot as plt
import numpy as np
file_location = '...'.png
rgb_data = np.array(plt.imread(file_location))
...
manually or otherwise edit some RGB values
...
plt.axis('off')
plt.imshow(rgb_data)
plt.savefig('image.jpg', dpi=96)
注意:在上面的代码中,我省略了对图像所做的特定编辑。这是因为我不认为他们是我的问题的一部分。即使我不做任何更改,只是加载然后重新保存图像,我仍然会遇到以下问题
以这种方式使用matplotlib保存图像时,我遇到了三个问题
1。使dpi匹配
我不确定如何使输出图像的dpi与读取图像的dpi自动匹配
2。使分辨率匹配
默认情况下,输入和输出图像的分辨率不匹配。即使我手动匹配两幅图像的dpi,它们仍然没有匹配的分辨率
3。获取匹配的文件大小
我的最终目标是生成与原始图像具有相同dpi、分辨率和文件大小的图像。这样,当我开始玩RGB值时,表面上看起来应该是完全相同的图像
我的问题是如何保存文件,使输出图像的dpi和分辨率(大概是通过扩展大小…)与输入匹配?
当然,图像中的像素数以及dpi应该固定分辨率。但是,看起来输出图像保存时周围有白色边框,这也会降低分辨率
欢迎使用任何python库的解决方案。但是,最好对现有代码进行编辑。因为我经常使用matplotlib,所以知道如何在将来避免这个问题也会很有用。非常感谢你的帮助 plt.save(…)
将保存Matplotlib图形。如果只想使用Matplotlib,请参阅
输出图像应与输入图像匹配
但我认为用枕头来保存你的形象会更好
import PIL.Image as Image
import numpy as np
file_location = "img.png"
path_to_save = "out.png"
img = Image.open(file_location)
rgb_data = np.array(img)
# modify your image
rgb_data = Image.fromarray(rgb_data)
rgb_data.save(path_to_save, format="PNG")
# you can also specify dpi, quality and etc.
# for example rgb_data.save(path_to_save, format="PNG", dpi=(300,300))
(注意:可能由于输入图像大小的压缩设置,输出大小会有所不同,请参阅)plt.save(…)
将保存Matplotlib图形。如果只想使用Matplotlib,请参阅
输出图像应与输入图像匹配
但我认为用枕头来保存你的形象会更好
import PIL.Image as Image
import numpy as np
file_location = "img.png"
path_to_save = "out.png"
img = Image.open(file_location)
rgb_data = np.array(img)
# modify your image
rgb_data = Image.fromarray(rgb_data)
rgb_data.save(path_to_save, format="PNG")
# you can also specify dpi, quality and etc.
# for example rgb_data.save(path_to_save, format="PNG", dpi=(300,300))
(注意:可能由于输入图像大小的压缩设置,输出大小会有所不同,请参阅)太棒了,非常感谢!这很详细地回答了我的问题,相关的帖子也很有帮助。太棒了,非常感谢米哈伊尔!这很详细地回答了我的问题,相关的帖子也很有帮助。