Tamaño de imagen JPG reducido en imsave

Estoy construyendo una biblioteca llamada caderas en la que un módulo está involucrado en la búsqueda de imágenes de mosaico y su almacenamiento en el disco. El problema aquí es que obtengo un mosaico de una URL remota y lo guardo usando la función scipy.misc.imsave en un directorio temporal. El tamaño del archivo guardado es de 41.0 kB , sin embargo, si guardo el archivo manualmente desde la URL remota , su tamaño es de 119.7 kB .

He copiado el caso de prueba fallido a continuación:

 def test_fetch_read_write_jpg(self, tmpdir): meta = HipsTileMeta( ... ) url = 'http://sofes.miximages.com/python/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 

Aquí está la afirmación fallida:

———————————- Llamada de salida estándar capturada ————- ————————-

(512, 512, 3)

(512, 512, 3)

Falso

El código relacionado con el almacenamiento de azulejos se muestra a continuación:

 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) 

También intenté guardar el archivo usando la biblioteca PIL.Image , usando este código:

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

Pero, produce los mismos resultados. Intenté imprimir los datos de mosaico en el índice [0][0] que llegó a ser [10, 10, 10] para ambos casos. Además, matplotlib la imagen usando matplotlib y los resultados fueron idénticos. Pero, no puedo averiguar la razón de la reducción de tamaño / calidad.

JPEG es un formato con pérdida . Si escribe una imagen en un archivo JPEG y luego la lee, en general no recuperará los mismos datos.

Para el almacenamiento de imágenes sin pérdida, puede utilizar PNG.