pub struct DecodeSize {
pub width: Option<u32>,
pub height: Option<u32>,
}Expand description
The size an image is decoded at, in physical pixels: the full size of the file, or a smaller one that the place it is shown at needs.
A twelve-megapixel photograph shown as an 80×80 thumbnail does not need 48 MB of pixels, and on a phone a gallery of them is what gets an application killed for memory. Decoding at the size shown keeps the cost to what is on the screen.
- Neither side given: the file’s own size (
DecodeSize::FULL). - One side: that side, and the other from the image’s own ratio.
- Both: the smallest size, at the image’s own ratio, that covers both. The ratio is never changed, so a picture cropped to a square box keeps its shape, and one letterboxed into it is not short of pixels either.
An image is never decoded larger than the file: asking for more gives the file’s own size.
Fields§
§width: Option<u32>The width wanted, in physical pixels.
height: Option<u32>The height wanted, in physical pixels.
Implementations§
Source§impl DecodeSize
impl DecodeSize
Sourcepub fn new(width: Option<u32>, height: Option<u32>) -> Self
pub fn new(width: Option<u32>, height: Option<u32>) -> Self
A size with either side, both, or neither.
Sourcepub fn target(self, full_width: u32, full_height: u32) -> (u32, u32)
pub fn target(self, full_width: u32, full_height: u32) -> (u32, u32)
The size a full_width × full_height image is decoded at, by the rules above.
use frus_core::DecodeSize;
let photo = (4000, 3000);
// A square thumbnail covered by the photo, at the photo's own ratio.
assert_eq!(DecodeSize::new(Some(200), Some(200)).target(photo.0, photo.1), (267, 200));
// One side: the other follows.
assert_eq!(DecodeSize::new(Some(400), None).target(photo.0, photo.1), (400, 300));
// Never larger than the file.
assert_eq!(DecodeSize::new(Some(8000), None).target(photo.0, photo.1), photo);Trait Implementations§
Source§impl Clone for DecodeSize
impl Clone for DecodeSize
impl Copy for DecodeSize
Source§impl Debug for DecodeSize
impl Debug for DecodeSize
Source§impl Default for DecodeSize
impl Default for DecodeSize
impl Eq for DecodeSize
Source§impl Hash for DecodeSize
impl Hash for DecodeSize
Source§impl PartialEq for DecodeSize
impl PartialEq for DecodeSize
impl StructuralPartialEq for DecodeSize
Auto Trait Implementations§
impl Freeze for DecodeSize
impl RefUnwindSafe for DecodeSize
impl Send for DecodeSize
impl Sync for DecodeSize
impl Unpin for DecodeSize
impl UnsafeUnpin for DecodeSize
impl UnwindSafe for DecodeSize
Blanket Implementations§
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
Mutably borrows from an owned value. Read more