MCPcopy
hub / github.com/scrapy/scrapy / convert_image

Method convert_image

scrapy/pipelines/images.py:187–221  ·  view source on GitHub ↗
(
        self,
        image: Image.Image,
        size: tuple[int, int] | None = None,
        *,
        response_body: BytesIO,
    )

Source from the content-addressed store, hash-verified

185 yield thumb_path, thumb_image, thumb_buf
186
187 def convert_image(
188 self,
189 image: Image.Image,
190 size: tuple[int, int] | None = None,
191 *,
192 response_body: BytesIO,
193 ) -> tuple[Image.Image, BytesIO]:
194 if image.format in {"PNG", "WEBP"} and image.mode == "RGBA":
195 background = self._Image.new("RGBA", image.size, (255, 255, 255))
196 background.paste(image, image)
197 image = background.convert("RGB")
198 elif image.mode == "P":
199 image = image.convert("RGBA")
200 background = self._Image.new("RGBA", image.size, (255, 255, 255))
201 background.paste(image, image)
202 image = background.convert("RGB")
203 elif image.mode != "RGB":
204 image = image.convert("RGB")
205
206 if size:
207 image = image.copy()
208 try:
209 # Image.Resampling.LANCZOS was added in Pillow 9.1.0
210 # remove this try except block,
211 # when updating the minimum requirements for Pillow.
212 resampling_filter = self._Image.Resampling.LANCZOS
213 except AttributeError:
214 resampling_filter = self._Image.ANTIALIAS # type: ignore[attr-defined]
215 image.thumbnail(size, resampling_filter)
216 elif image.format == "JPEG":
217 return image, response_body
218
219 buf = BytesIO()
220 image.save(buf, "JPEG")
221 return image, buf
222
223 def get_media_requests(
224 self, item: Any, info: MediaPipeline.SpiderInfo

Callers 2

get_imagesMethod · 0.95
test_convert_imageMethod · 0.80

Calls 1

copyMethod · 0.45

Tested by 1

test_convert_imageMethod · 0.64