pub struct ImageProcessor { /* private fields */ }Expand description
Image processing utilities
Provides methods for common image operations like resizing, thumbnail generation, and EXIF stripping.
Implementations§
Source§impl ImageProcessor
impl ImageProcessor
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Creates a new image processor with default settings
Uses FilterType::Lanczos3 for high-quality resizing.
§Examples
use acton_htmx::storage::processing::ImageProcessor;
let processor = ImageProcessor::new();Sourcepub const fn with_filter(filter: FilterType) -> Self
pub const fn with_filter(filter: FilterType) -> Self
Creates a processor with a specific resize filter
§Examples
use acton_htmx::storage::processing::ImageProcessor;
use image::imageops::FilterType;
let processor = ImageProcessor::with_filter(FilterType::Nearest);Sourcepub fn generate_thumbnail(
&self,
file: &UploadedFile,
max_width: u32,
max_height: u32,
) -> StorageResult<UploadedFile>
pub fn generate_thumbnail( &self, file: &UploadedFile, max_width: u32, max_height: u32, ) -> StorageResult<UploadedFile>
Generates a thumbnail from an uploaded image
Creates a thumbnail that fits within the specified dimensions while maintaining aspect ratio.
§Arguments
file- The uploaded image filemax_width- Maximum width in pixelsmax_height- Maximum height in pixels
§Errors
Returns error if the file is not a valid image or processing fails
§Examples
use acton_htmx::storage::{UploadedFile, processing::ImageProcessor};
let file = UploadedFile::new("photo.jpg", "image/jpeg", vec![/* ... */]);
let processor = ImageProcessor::new();
// Generate 200x200 thumbnail
let thumbnail = processor.generate_thumbnail(&file, 200, 200)?;Sourcepub fn resize(
&self,
file: &UploadedFile,
width: u32,
height: u32,
) -> StorageResult<UploadedFile>
pub fn resize( &self, file: &UploadedFile, width: u32, height: u32, ) -> StorageResult<UploadedFile>
Resizes an image to exact dimensions
Resizes the image to the specified width and height. This may change the aspect ratio if the new dimensions don’t match the original.
§Arguments
file- The uploaded image filewidth- Target width in pixelsheight- Target height in pixels
§Errors
Returns error if the file is not a valid image or processing fails
§Examples
use acton_htmx::storage::{UploadedFile, processing::ImageProcessor};
let file = UploadedFile::new("photo.jpg", "image/jpeg", vec![/* ... */]);
let processor = ImageProcessor::new();
// Resize to exactly 800x600
let resized = processor.resize(&file, 800, 600)?;Sourcepub fn convert_format(
&self,
file: &UploadedFile,
target_format: &str,
) -> StorageResult<UploadedFile>
pub fn convert_format( &self, file: &UploadedFile, target_format: &str, ) -> StorageResult<UploadedFile>
Converts an image to a different format
§Arguments
file- The uploaded image filetarget_format- The desired output format (e.g., “image/png”)
§Errors
Returns error if the file is not a valid image or format is unsupported
§Examples
use acton_htmx::storage::{UploadedFile, processing::ImageProcessor};
let file = UploadedFile::new("photo.jpg", "image/jpeg", vec![/* ... */]);
let processor = ImageProcessor::new();
// Convert JPEG to PNG
let png = processor.convert_format(&file, "image/png")?;Sourcepub fn strip_exif(&self, file: &UploadedFile) -> StorageResult<UploadedFile>
pub fn strip_exif(&self, file: &UploadedFile) -> StorageResult<UploadedFile>
Strips EXIF metadata from an image for privacy
Removes all EXIF metadata (location, camera info, etc.) from an image. This is important for user privacy as EXIF data can contain sensitive information like GPS coordinates.
§Errors
Returns error if the file is not a valid image or processing fails
§Examples
use acton_htmx::storage::{UploadedFile, processing::ImageProcessor};
let file = UploadedFile::new("photo.jpg", "image/jpeg", vec![/* ... */]);
let processor = ImageProcessor::new();
// Remove all EXIF metadata
let stripped = processor.strip_exif(&file)?;Sourcepub fn get_dimensions(&self, file: &UploadedFile) -> StorageResult<(u32, u32)>
pub fn get_dimensions(&self, file: &UploadedFile) -> StorageResult<(u32, u32)>
Gets image dimensions without fully decoding
This is faster than loading the full image when you only need dimensions.
§Errors
Returns error if the file is not a valid image
§Examples
use acton_htmx::storage::{UploadedFile, processing::ImageProcessor};
let file = UploadedFile::new("photo.jpg", "image/jpeg", vec![/* ... */]);
let processor = ImageProcessor::new();
let (width, height) = processor.get_dimensions(&file)?;
println!("Image is {width}x{height}");Trait Implementations§
Source§impl Clone for ImageProcessor
impl Clone for ImageProcessor
Source§fn clone(&self) -> ImageProcessor
fn clone(&self) -> ImageProcessor
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ImageProcessor
impl Debug for ImageProcessor
Auto Trait Implementations§
impl Freeze for ImageProcessor
impl RefUnwindSafe for ImageProcessor
impl Send for ImageProcessor
impl Sync for ImageProcessor
impl Unpin for ImageProcessor
impl UnwindSafe for ImageProcessor
Blanket Implementations§
Source§impl<T> ActonMessage for T
impl<T> ActonMessage for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().