Merge pull request #1013 from taigaio/url-fetcher-for-cairo-svg
Fix problem with fetch urls from cairoSVGremotes/origin/fix-throttling-bug
commit
a0f83fef64
|
@ -33,15 +33,22 @@ from io import BytesIO
|
|||
# SVG thumbnail generator
|
||||
try:
|
||||
from cairosvg.surface import PNGSurface
|
||||
from cairosvg.url import fetch
|
||||
import magic
|
||||
|
||||
def url_fetcher(url, resource_type):
|
||||
if url.startswith("data:"):
|
||||
return fetch(url, resource_type)
|
||||
return b""
|
||||
|
||||
|
||||
def svg_image_factory(fp, filename):
|
||||
mime_type = magic.from_buffer(fp.read(1024), mime=True)
|
||||
if mime_type != "image/svg+xml":
|
||||
raise TypeError
|
||||
|
||||
fp.seek(0)
|
||||
png_data = PNGSurface.convert(fp.read())
|
||||
png_data = PNGSurface.convert(fp.read(), url_fetcher=url_fetcher)
|
||||
return PngImageFile(BytesIO(png_data))
|
||||
|
||||
Image.register_mime("SVG", "image/svg+xml")
|
||||
|
@ -50,11 +57,14 @@ try:
|
|||
except Exception:
|
||||
pass
|
||||
|
||||
Image.init()
|
||||
# PSD thumbnail generator
|
||||
def psd_image_factory(data, *args):
|
||||
return PSDImage.from_stream(data).as_PIL()
|
||||
try:
|
||||
return PSDImage.from_stream(data).as_PIL()
|
||||
except Exception:
|
||||
raise TypeError
|
||||
|
||||
Image.init()
|
||||
Image.register_open("PSD", psd_image_factory)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue