瀏覽代碼

Add preserve_svg option to api ImageRenditionField

Joshua Munn 2 年之前
父節點
當前提交
b30bfa993f
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      wagtail/images/api/fields.py

+ 9 - 2
wagtail/images/api/fields.py

@@ -3,6 +3,7 @@ from collections import OrderedDict
 from rest_framework.fields import Field
 
 from ..models import SourceImageIOError
+from ..utils import to_svg_safe_spec
 
 
 class ImageRenditionField(Field):
@@ -27,13 +28,19 @@ class ImageRenditionField(Field):
     }
     """
 
-    def __init__(self, filter_spec, *args, **kwargs):
+    def __init__(self, filter_spec, preserve_svg=False, *args, **kwargs):
         self.filter_spec = filter_spec
+        self.preserve_svg = preserve_svg
         super().__init__(*args, **kwargs)
 
     def to_representation(self, image):
         try:
-            thumbnail = image.get_rendition(self.filter_spec)
+            if image.is_svg() and self.preserve_svg:
+                filter_spec = to_svg_safe_spec(self.filter_spec)
+            else:
+                filter_spec = self.filter_spec
+
+            thumbnail = image.get_rendition(filter_spec)
 
             return OrderedDict(
                 [