사용자 정의 이미지 필터¶
Wagtail은 다양한 이미지 처리 기능을 제공합니다. 사용자 정의 이미지 처리 기능을 추가하려면, wagtail_hooks.py 파일에 register_image_operations 훅을 추가하세요.
이 예제에서 willow.image 는 Pillow 이미지 인스턴스입니다. 만약 다른 이미지 라이브러리를 사용하거나 여러 이미지 라이브러리를 지원하려면, 필터 코드를 그에 맞게 수정해야 합니다. 더 자세한 정보는 Willow 문서를 참조하세요.
from PIL import ImageFilter
from wagtail import hooks
from wagtail.images.image_operations import FilterOperation
class BlurOperation(FilterOperation):
def construct(self, radius):
self.radius = int(radius)
def run(self, willow, image, env):
willow.image = willow.image.filter(ImageFilter.GaussianBlur(radius=self.radius))
return willow
@hooks.register("register_image_operations")
def register_image_operations():
return [
("blur", BlurOperation),
]
템플릿에서는 다음과 같이 필터를 사용합니다:
{% load wagtailimages_tags %}
{% image page.photo width-400 blur-7 %}
만약 사용자 정의 이미지 필터가 Image 내의 필드, 예를 들어 초점을 정의하는 필드들에 의존한다면, 서브클래싱한 FilterOperation 에 해당 필드명들을 나열하는 vary_fields 속성을 추가하세요. 이렇게 하면 초점이 변경될 때마다 새로운 버전의 이미지가 생성됩니다:
class BlurOutsideFocusPointOperation(FilterOperation):
vary_fields = (
"focal_point_width",
"focal_point_height",
"focal_point_x",
"focal_point_y",
)
# ...