Skip to main content

TransformOptions

Struct TransformOptions 

Source
#[non_exhaustive]
pub struct TransformOptions {
Show 19 fields pub width: Option<u32>, pub height: Option<u32>, pub fit: Option<Fit>, pub position: Option<Position>, pub format: Option<MediaType>, pub quality: Option<u8>, pub optimize: OptimizeMode, pub target_quality: Option<TargetQuality>, pub background: Option<Rgba8>, pub rotate: Rotation, pub auto_orient: bool, pub strip_metadata: bool, pub preserve_exif: bool, pub blur: Option<f32>, pub sharpen: Option<f32>, pub grayscale: bool, pub without_enlargement: bool, pub crop: Option<CropRegion>, pub deadline: Option<Duration>,
}
Expand description

Raw transform options before defaulting and validation has completed.

Start from TransformOptions::default() and assign the fields you need. Validation and the resolution of the rest happen inside transform, which reports what it refuses through TransformError. The struct is #[non_exhaustive], so a field a later version of truss adds is a minor change rather than a breaking one, and a struct literal is not available from outside the crate.

§Examples

use truss::{TransformOptions, MediaType, Rotation};

let mut opts = TransformOptions::default();
opts.width = Some(800);
opts.height = Some(600);
opts.format = Some(MediaType::Webp);
opts.quality = Some(80);
opts.rotate = Rotation::DEG_90;
assert_eq!(opts.width, Some(800));
assert_eq!(opts.quality, Some(80));
assert_eq!(opts.rotate, Rotation::DEG_90);
// strip_metadata defaults to true
assert!(opts.strip_metadata);

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§width: Option<u32>

The desired output width in pixels.

§height: Option<u32>

The desired output height in pixels.

§fit: Option<Fit>

The requested resize fit mode.

§position: Option<Position>

The requested positioning mode.

§format: Option<MediaType>

The requested output format.

§quality: Option<u8>

The requested lossy quality.

§optimize: OptimizeMode

The requested optimization mode.

§target_quality: Option<TargetQuality>

Optional perceptual target used by lossy optimization.

§background: Option<Rgba8>

The requested background color.

§rotate: Rotation

The requested extra rotation.

§auto_orient: bool

Whether EXIF-based auto-orientation should run.

§strip_metadata: bool

Whether metadata should be stripped from the output.

§preserve_exif: bool

Whether EXIF metadata should be preserved.

§blur: Option<f32>

Gaussian blur sigma.

When set, a Gaussian blur with the given sigma is applied after resizing and before encoding. Valid range is 0.1–100.0.

§sharpen: Option<f32>

Unsharp-mask (sharpen) sigma.

When set, an unsharp mask with the given sigma is applied after resizing and before encoding. Valid range is 0.1–100.0. The sharpening threshold is fixed at 1.

§grayscale: bool

Whether the image should be desaturated to grayscale.

When true, the image is converted to grayscale after resizing, blur, and sharpening, and before any watermark is composited, so a watermark keeps its own colors. Luminance is computed with the Rec. 601 weights the image crate uses, and the alpha channel is preserved.

§without_enlargement: bool

Whether a source smaller than the requested size may be scaled up.

When true, the resize never enlarges: an image already within the requested bounds is left at its own size. This is a separate question from Fit, which decides how the image is arranged relative to the box, so the two combine freely. contain still pads out to the full requested box; only the content inside it stops growing.

§crop: Option<CropRegion>

Optional explicit crop region applied before resize.

When set, the image is cropped to the specified rectangle before any resize operation. The crop region is validated at runtime against the decoded image dimensions.

§deadline: Option<Duration>

Optional wall-clock deadline for the transform pipeline.

When set, the transform checks elapsed time at each pipeline stage and returns TransformError::LimitExceeded if the deadline is exceeded. Adapters inject this value based on their operational requirements — for example, the HTTP server sets a 30-second deadline while the CLI leaves it as None (unlimited).

The check happens between stages, not inside one. A stage that is already running runs to its end, so a transform can return after the deadline rather than at it, by however long its slowest single step takes. Encoding is the step where that matters, since no encoder truss calls can be interrupted part way.

Trait Implementations§

Source§

impl Clone for TransformOptions

Source§

fn clone(&self) -> TransformOptions

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TransformOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TransformOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TransformOptions

Source§

fn eq(&self, other: &TransformOptions) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TransformOptions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> To for T
where T: ?Sized,

Source§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
Source§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.