【问题标题】:JPG image size reduced on imsaveJPG 图像大小在 imsave 上减小
【发布时间】:2018-02-07 08:23:47
【问题描述】:

我正在构建一个名为hips 的库,其中一个模块涉及获取平铺图像并将它们存储在磁盘上。这里的问题是我从remote URL 获取一个图块并使用scipy.misc.imsave 函数将其保存在一个临时目录中。保存的文件大小是41.0 kB,但是,如果我从remote URL手动保存文件,它的大小是119.7 kB

我复制了下面失败的测试用例:

def test_fetch_read_write_jpg(self, tmpdir):
    meta = HipsTileMeta( ... )
    url = 'http://alasky.unistra.fr/2MASS/H/Norder6/Dir30000/Npix30889.jpg'
    tile = HipsTile.fetch(meta, url)

    filename = str(tmpdir / 'Npix30889.jpg')
    tile.write(filename)
    tile2 = HipsTile.read(meta, filename=filename)
    print(tile.data.shape)
    print(tile2.data.shape)

    assert tile == tile2 

这是失败的断言:

----------------------捕获的标准输出调用--------- ----------------------------------------

(512, 512, 3)

(512, 512, 3)

错误

tile存储涉及的代码如下:

from scipy.misc import imsave
def write(self, filename: str = None) -> None:
    path = Path(filename) if filename else self.meta.full_path
    imsave(str(path), self.data)

我还尝试使用 PIL.Image 库保存文件,使用以下代码:

from PIL import Image
image = Image.fromarray(self.data)
image.save(str(path))

但是,它会产生相同的结果。我尝试打印出索引[0][0] 处的平铺数据,这两种情况都为[10, 10, 10]。另外,我使用matplotlib 显示图像,结果是相同的。但是,我无法弄清楚尺寸/质量减少的原因。

【问题讨论】:

    标签: python scipy python-imaging-library


    【解决方案1】:

    JPEGlossy 格式。如果您将图像写入 JPEG 文件,然后再将其读回,则通常不会返回相同的数据。

    对于无损图像存储,您可以使用 PNG。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 2017-02-06
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多