Process
返回按给定处理规格处理后的新图像资源。
Process 方法依据给定的处理规格,从一张processable image(可处理的图像)返回新的资源。
用法
这个方法功能全面,能在一条规格字符串中完成完整的图像变换,包括缩放、裁剪、旋转与格式转换。与 Resize、Crop 这类专用方法不同,如果要改变图像尺寸,你必须在规格中显式写出 action。
{{ with resources.Get "images/original.jpg" }}
{{ with .Process "crop 200x200 TopRight webp q50" }}
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
{{ end }}
{{ end }}上面的示例中,"crop 200x200 TopRight webp q50" 就是处理规格。
也可以用该方法做旋转、格式转换等简单变换:
{{/* Rotate 90 degrees counter-clockwise. */}}
{{ $image := $image.Process "r90" }}
{{/* Convert to WebP. */}}
{{ $image := $image.Process "webp" }}Process 方法也可以作为滤镜使用。如果需要对一张图像应用多个滤镜,这种方式更有效。详见 images.Process。
处理规格
处理规格是一个以空格分隔、大小写不敏感的列表,包含下列选项中的一个或多个,顺序任意:
- action
- 指定
crop、fill、fit或resize之一。适用于Process方法和images.Process滤镜。若指定了 action,还必须同时提供尺寸。 - anchor
- 裁剪或填充图像时使用的焦点。可选值包括
TopLeft、Top、TopRight、Left、Center、Right、BottomLeft、Bottom、BottomRight或Smart。Smart选项借助muesli/smartcrop包找出图像中最值得保留的区域。默认取成像配置中的anchor设置。 - background color
- 把透明图像转换为不支持透明度的格式(例如 PNG 转 JPEG)时使用的背景色。当图像按非正交角度旋转、产生空白区域且处理规格中未指定背景色时,该颜色也用于填充空白。取值必须是 RGB 十六进制颜色。默认取成像配置中的
bgColor设置。 - compression
- (0.153.5 新增) 编码策略,适用于 AVIF 和 WebP 图像。可选值为
lossy或lossless。默认取成像配置中与格式对应的compression设置。 - dimensions
- 结果图像的尺寸,单位为像素。格式为
WIDTHxHEIGHT,其中WIDTH与HEIGHT都是整数。缩放图像时可以只指定宽度(如600x)或只指定高度(如x400)以等比缩放;同时指定宽度和高度可能导致非等比缩放。裁剪、适配或填充时必须同时给出宽度和高度,如600x400。 - format
- 结果图像的格式。可选值包括
avif、bmp、gif、jpeg、png、tiff或webp。默认与源图像格式相同。 - hint
- 内容提示,适用于 AVIF 和 WebP 图像。可选值包括
drawing、icon、photo、picture或text。默认取成像配置中与格式对应的hint设置。取值 示例 drawing带高对比细节的手绘或线稿 icon尺寸较小的彩色图像 photo自然光照下的户外照片 picture人像等室内照片 text以文字为主的图像 - quality
- 视觉保真度,适用于 JPEG 图像,以及使用
lossy压缩的 AVIF 和 WebP 图像。格式为qQUALITY,其中QUALITY是1到100(含两端)之间的整数。数值越小越优先考虑文件体积,数值越大越优先考虑视觉清晰度。默认取成像配置中与格式对应的quality设置。 - resampling filter
- 缩放、适配或填充图像时计算新像素所用的算法。常用选项包括
box、lanczos、catmullRom、mitchellNetravali、linear或nearestNeighbor。默认取成像配置中的resampleFilter设置。滤镜 说明 box简单快速的平均滤镜,适合缩小图像 lanczos高质量重采样滤镜,用于照片可获得锐利结果 catmullRom锐利的三次滤镜,比 Lanczos 更快而结果相近 mitchellNetravali三次滤镜,结果更平滑,振铃伪影比 CatmullRom 更少 linear双线性重采样滤镜,输出平滑,比三次滤镜更快 nearestNeighbor最快的重采样滤镜,不做抗锯齿 可用重采样滤镜的完整列表见源文档。若愿意以性能换取画质,可以试一试其他滤镜。
- rotation
- 逆时针旋转图像的整角度数。格式为
rDEGREES,其中DEGREES是整数。Hugo 会在其他任何变换之前先执行旋转,因此你的目标尺寸和锚点都应针对旋转后的图像方向。正交旋转用r90、r180或r270,任意角度如r45。要顺时针旋转,使用r-45这样的负数。要根据图像的 Exif 方向标记自动旋转,请改用images.AutoOrient滤镜,而不是手动旋转。按非正交角度旋转会扩大图像范围以容纳旋转后的四角。对 AVIF、PNG、WebP 等支持 alpha 通道的格式,这些多出来的空白区域默认透明。若目标格式不支持透明度(如 JPEG),或在处理规格中显式指定了背景色,空白区域会被填充。若需要颜色但处理字符串中没有指定,则默认取成像配置中的
bgColor设置。
示例
{{ with resources.Get "images/original.jpg" }}
{{ with .Process "crop 200x200 TopRight webp q50" }}
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
{{ end }}
{{ end }}英文原文此处用示例照片演示 crop 200x200 TopRight webp q50 的前后对比效果;本站未收录该示例图。