diff --git a/beets/util/artresizer.py b/beets/util/artresizer.py index 6fcd5f9b89..88d69696c0 100644 --- a/beets/util/artresizer.py +++ b/beets/util/artresizer.py @@ -528,7 +528,7 @@ def convert(self, source, **kwargs): if not self.local: # FIXME: Should probably issue a warning? return source - + params = {} if "new_format" in kwargs: @@ -541,7 +541,7 @@ def convert(self, source, **kwargs): fname, ext = os.path.splitext(source) target = fname + b"." + new_format.encode("utf8") - params['target'] = target + params["target"] = target if "maxwidth" in kwargs and kwargs["maxwidth"] > 0: params["maxwidth"] = kwargs["maxwidth"] diff --git a/beetsplug/fetchart.py b/beetsplug/fetchart.py index ceb5095c08..ed741f4846 100644 --- a/beetsplug/fetchart.py +++ b/beetsplug/fetchart.py @@ -178,7 +178,7 @@ def convert(self, plugin): self._log.debug( "image needs rescaling ({} > {})", self.size[0], plugin.maxwidth ) - convert_params['maxwidth'] = plugin.maxwidth + convert_params["maxwidth"] = plugin.maxwidth filesize = os.stat(syspath(self.path)).st_size if self.should_downsize(plugin, filesize): @@ -187,7 +187,7 @@ def convert(self, plugin): filesize, plugin.max_filesize, ) - convert_params['max_filesize'] = plugin.max_filesize + convert_params["max_filesize"] = plugin.max_filesize fmt = ArtResizer.shared.get_format(self.path) if self.should_reformat(plugin, fmt): @@ -196,11 +196,11 @@ def convert(self, plugin): fmt, plugin.cover_format, ) - convert_params['new_format'] = plugin.cover_format + convert_params["new_format"] = plugin.cover_format if self.should_deinterlace(plugin): self._log.debug("image needs deinterlacing") - convert_params['deinterlace'] = plugin.deinterlace + convert_params["deinterlace"] = plugin.deinterlace if convert_params: self.path = ArtResizer.shared.convert(self.path, **convert_params) diff --git a/test/test_art_resize.py b/test/test_art_resize.py index 9e919a4ae3..9c699e22b6 100644 --- a/test/test_art_resize.py +++ b/test/test_art_resize.py @@ -104,35 +104,50 @@ def _test_img_resize(self, backend): < os.stat(syspath(im_75_qual)).st_size ) - def _test_img_reformat(self, backend): + def _test_img_reformat(self, backend): fname, ext = os.path.splitext(self.IMG_225x225) - target_jpg = fname + b"." + "png".encode("utf8") + target_png = fname + b"." + "png".encode("utf8") # check reformat converts jpg to png im_png = backend.convert( self.IMG_225x225, - target=target_jpg, + target=target_png, ) - self.assertEqual(b"PNG", backend.get_format(im_png)) + assert backend.get_format(im_png) == b"PNG" # check reformat converts png to jpg with deinterlaced and maxwidth option fname, ext = os.path.splitext(self.IMG_225x225_PNG) - target_png = fname + b"." + "jpg".encode("utf8") + target_jpg = fname + b"." + "jpg".encode("utf8") im_jpg_deinterlaced = backend.convert( self.IMG_225x225_PNG, maxwidth=225, - target=target_png + target=target_jpg, + deinterlaced=True, ) - self.assertEqual(b"JPEG", backend.get_format(im_jpg_deinterlaced)) + assert backend.get_format(im_jpg_deinterlaced) == b"JPEG" self._test_img_deinterlaced(backend, im_jpg_deinterlaced) + # check reformat actually also resizes if maxwidth is also passed in + im_png_deinterlaced_smaller = backend.convert( + self.IMG_225x225_PNG, + maxwidth=100, + deinterlaced=True, + ) + + assert backend.get_format(im_png_deinterlaced_smaller) == b"PNG" + assert ( + os.stat(syspath(im_png_deinterlaced_smaller)).st_size + < os.stat(syspath(self.IMG_225x225_PNG)).st_size + ) + self._test_img_deinterlaced(backend, im_png_deinterlaced_smaller) + def _test_img_deinterlaced(self, backend, path): - if backend.NAME == 'PIL': + if backend.NAME == "PIL": from PIL import Image with Image.open(path) as img: assert "progression" not in img.info - elif backend.NAME == 'IMImageMagick': + elif backend.NAME == "IMImageMagick": cmd = backend.identify_cmd + [ "-format", "%[interlace]",