50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
title: process_image
|
|
---
|
|
module: lektor.imagetools
|
|
---
|
|
signature: ctx, source_image, dst_filename, width=None, height=None, mode=ThumbnailMode.DEFAULT
|
|
---
|
|
summary: Build an image from a source image, optionally compressing and resizing.
|
|
---
|
|
type: function
|
|
---
|
|
version_added: 2.0
|
|
---
|
|
body:
|
|
|
|
This function takes a [Context :ref](../../build/context/) object, the
|
|
absolute paths to the image's source and target files, the target image's
|
|
width and/or height, and the operation mode.
|
|
In the default mode, if width or height are `None`, they are calculated
|
|
from the source image's dimensions so that the image is scaled proportionally.
|
|
|
|
Used internally for the implementation of [thumbnail :ref](../../db/record/thumbnail/), and exposed as an API for image-processing plugins.
|
|
|
|
## Example
|
|
|
|
```python
|
|
from lektor.build_programs import AttachmentBuildProgram
|
|
from lektor.context import get_ctx
|
|
from lektor.db import Image
|
|
from lektor.imagetools import process_image, ThumbnailMode
|
|
from lektor.pluginsystem import Plugin
|
|
|
|
|
|
class ImageCropBuildProgram(AttachmentBuildProgram):
|
|
def build_artifact(self, artifact):
|
|
ctx = get_ctx()
|
|
width, height = 600, 400
|
|
source_img = artifact.source_obj.attachment_filename
|
|
artifact.ensure_dir()
|
|
|
|
process_image(ctx,
|
|
source_img,
|
|
artifact.dst_filename,
|
|
width, height, mode=ThumbnailMode.CROP)
|
|
|
|
|
|
class ImageCropPlugin(Plugin):
|
|
def on_setup_env(self, **extra):
|
|
self.env.add_build_program(Image, ImageCropBuildProgram)
|
|
```
|