Merge pull request #1013 from taigaio/url-fetcher-for-cairo-svg

Fix problem with fetch urls from cairoSVG
remotes/origin/fix-throttling-bug
Alejandro 2017-07-21 09:47:18 +02:00 committed by GitHub
commit a0f83fef64
1 changed files with 13 additions and 3 deletions

View File

@ -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):
try:
return PSDImage.from_stream(data).as_PIL()
except Exception:
raise TypeError
Image.init()
Image.register_open("PSD", psd_image_factory)