Mosaic

Struct Mosaic 

Source
pub struct Mosaic {
    pub master: Master,
    pub tiles: Vec<RgbImage>,
    pub grid_size: (u32, u32),
}

Fields§

§master: Master

The Master image to reconstruct.

§tiles: Vec<RgbImage>

The tile images to use to reconstruct the Master image. The tile images should be the same size as the Master::cell_size. There should also be at least Master::cells.len() tiles.

§grid_size: (u32, u32)

The number of cells horizontally and vertically in the mosaic.

Implementations§

Source§

impl Mosaic

Represents a photo mosaic.

Source

pub fn from_file_and_dir<P: AsRef<Path>, Q: AsRef<Path>>( master_file: P, tile_dir: Q, grid_size: (u32, u32), ) -> Result<Self, PhomoError>

Construct a Mosaic from a master image file and a directory of tile images.

§Arguments
  • master_file: The path to the master image file.
  • tile_dir: The path to the directory containing the tile images.
  • grid_size: The grid size of the mosaic, the number of cells horizontally and vertically.
§Errors
Source

pub fn from_images( master_img: RgbImage, tiles: Vec<RgbImage>, grid_size: (u32, u32), ) -> Result<Self, PhomoError>

Construct a Mosaic from RgbImage buffers of the master images and the tile images.

§Arguments
  • master_img: The master image buffer.
  • tiles: The tile image buffers.
  • grid_size: The grid size of the mosaic, the number of cells horizontally and vertically.
  • max_tile_occurrences: The maximum number of times a tile can be repeated in the mosaic. Should be greater than 0.
§Errors
Source

pub fn new( master: Master, tiles: Vec<RgbImage>, grid_size: (u32, u32), ) -> Result<Self, PhomoError>

Create a new Mosaic from the provided Master and tiles.

§Arguments
  • master: The master.
  • tiles: The tile image buffers.
  • grid_size: The grid size of the mosaic, the number of cells horizontally and vertically.
§Errors
Source

pub fn distance_matrix(&self) -> DistanceMatrix

Compute the DistanceMatrix between the tiles and the master cells, using the norm_l1 metric.

To use a different distance metric, use the distance_matrix_with_metric method.

The row index is the cell index and the column index is the tile index.

Source

pub fn distance_matrix_with_metric( &self, metric: fn(&RgbImage, &RgbImage) -> i64, ) -> DistanceMatrix

Compute the DistanceMatrix between the tiles and the master cells using the provided metric function. See phomo::metrics for implemented distance metrics.

The row index is the cell index and the column index is the tile index.

Source

pub fn render(&self, assignments: Vec<usize>) -> Result<RgbImage, PhomoError>

Render the photo mosaic image using the provided tile assignments.

§Arguments
  • assignments: The tile index assigned to each master cell. The length of the assignments should be equal to the number of master cells. The tile index should be less than the number of tiles.
§Errors
Source

pub fn build( &self, distance_matrix: DistanceMatrix, config: SolverConfig, ) -> Result<RgbImage, PhomoError>

Compute the tile to master cell assignments using the Hungarian solver algorithm, and build the photo mosaic image.

§Errors
Source

pub fn build_with_solver<S: Solve>( &self, distance_matrix: DistanceMatrix, solver: S, ) -> Result<RgbImage, PhomoError>

Compute the tile to master cell assignments using the provided solver algorithm, and build the photo mosaic image. See phomo::solvers for implemented solvers.

§Arguments
  • distance_matrix: The distance matrix between the master image and the tiles.
  • solver: The solver algorithm to use for the assignment problem.
§Errors
Source§

impl Mosaic

Source

pub fn build_blueprint( &self, distance_matrix: DistanceMatrix, config: SolverConfig, ) -> Result<Blueprint, PhomoError>

Available on crate feature blueprint only.

Compute the tile to master cell assignments, and construct a Blueprint of the mosaic image.

§Errors
Source

pub fn build_blueprint_with_solver<S: Solve>( &self, distance_matrix: DistanceMatrix, solver: S, ) -> Result<Blueprint, PhomoError>

Available on crate feature blueprint only.

Compute the tile to master cell assignments using the provided solver algorithm, and construct a Blueprint of the mosaic image. See phomo::solvers for implemented solvers.

§Arguments:
  • distance_matrix: The distance matrix between the master image and the tiles.
  • solver: The solver algorithm to use for the assignment problem.
§Errors

Trait Implementations§

Source§

impl Clone for Mosaic

Source§

fn clone(&self) -> Mosaic

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Mosaic

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Mosaic

§

impl RefUnwindSafe for Mosaic

§

impl Send for Mosaic

§

impl Sync for Mosaic

§

impl Unpin for Mosaic

§

impl UnwindSafe for Mosaic

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
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, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
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> 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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.