pub struct ImageUtils;Expand description
跨平台图片处理工具函数集合。 从 core::image_processor 中提取的平台无关逻辑,不依赖任何 Windows API。
Implementations§
Source§impl ImageUtils
impl ImageUtils
Sourcepub async fn convert_image_to_png(
image_data: Vec<u8>,
) -> Result<Vec<u8>, ImageUtilsError>
pub async fn convert_image_to_png( image_data: Vec<u8>, ) -> Result<Vec<u8>, ImageUtilsError>
将图片数据转换为 PNG 格式。 支持 SVG、BMP、JPEG、GIF、WebP 等格式自动检测并转换。 参数:image_data - 原始图片字节数据。 返回:PNG 格式字节数据,失败返回 ImageUtilsError。
Sourcepub fn to_webp(png_data: Vec<u8>) -> Result<Vec<u8>, ImageUtilsError>
pub fn to_webp(png_data: Vec<u8>) -> Result<Vec<u8>, ImageUtilsError>
将 PNG 图片数据编码为 WebP 格式(无损 VP8L)。 用 image crate 内置的纯 Rust 无损编码器(image-webp),不依赖 libwebp C 库。 参数:png_data - PNG 格式图片字节数据。 返回:WebP 格式字节数据,失败返回 ImageUtilsError。
Sourcepub fn to_data_url(data: &[u8]) -> String
pub fn to_data_url(data: &[u8]) -> String
将图片字节数据转换为 base64 data URL(MIME 由 image crate 的字节头嗅探决定)。 参数:data - 图片字节数据。 返回:data URL 字符串;空数据返回空字符串;无法识别格式时按 PNG 标注。
Sourcepub fn is_html_content(data: &[u8]) -> bool
pub fn is_html_content(data: &[u8]) -> bool
判断数据是否像是 HTML 内容。 参数:data - 待检测的字节数据。 返回:true 表示是 HTML 内容。
Sourcepub async fn resize_image(
data: Vec<u8>,
max_width: u32,
max_height: u32,
) -> Result<Vec<u8>, ImageUtilsError>
pub async fn resize_image( data: Vec<u8>, max_width: u32, max_height: u32, ) -> Result<Vec<u8>, ImageUtilsError>
调整图片大小,如果超过指定尺寸则等比缩放。 参数:data - PNG 图片字节数据;max_width - 最大宽度;max_height - 最大高度。 返回:调整大小后的 PNG 字节数据,失败返回 ImageUtilsError。
Sourcepub fn trim_transparent_white_border(
png_data: Vec<u8>,
) -> Result<Vec<u8>, ImageUtilsError>
pub fn trim_transparent_white_border( png_data: Vec<u8>, ) -> Result<Vec<u8>, ImageUtilsError>
从 PNG 图像数据中裁剪掉外围的白色或透明像素。 参数:png_data - PNG 格式图片字节数据(须为正方形)。 返回:裁剪后的 PNG 字节数据,失败返回 ImageUtilsError。
Sourcepub fn rgba_image_to_png(
rgba_image: &RgbaImage,
) -> Result<Vec<u8>, ImageUtilsError>
pub fn rgba_image_to_png( rgba_image: &RgbaImage, ) -> Result<Vec<u8>, ImageUtilsError>
将 RGBA 图像数据编码为 PNG 格式。 参数:rgba_image - RGBA 格式图像缓冲区。 返回:PNG 字节数据,失败返回 ImageUtilsError。
Sourcepub async fn get_dominant_color(
image_data: Vec<u8>,
) -> Result<(u8, u8, u8), ImageUtilsError>
pub async fn get_dominant_color( image_data: Vec<u8>, ) -> Result<(u8, u8, u8), ImageUtilsError>
获取图片的主色调。 使用 K-Means 聚类算法分析图片中非透明像素的颜色分布。 参数:image_data - PNG 格式图片字节数据。 返回:(R, G, B) 主色调元组,失败返回 ImageUtilsError。
Auto Trait Implementations§
impl Freeze for ImageUtils
impl RefUnwindSafe for ImageUtils
impl Send for ImageUtils
impl Sync for ImageUtils
impl Unpin for ImageUtils
impl UnsafeUnpin for ImageUtils
impl UnwindSafe for ImageUtils
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.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, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more