pub struct Frame<'a> {
pub delay: u16,
pub dispose: DisposalMethod,
pub transparent: Option<u8>,
pub needs_user_input: bool,
pub top: u16,
pub left: u16,
pub width: u16,
pub height: u16,
pub interlaced: bool,
pub palette: Option<Vec<u8>>,
pub buffer: Cow<'a, [u8]>,
}
Expand description
A GIF frame
Fields§
§delay: u16
Frame delay in units of 10 ms.
dispose: DisposalMethod
Disposal method.
transparent: Option<u8>
Transparent index (if available).
needs_user_input: bool
True if the frame needs user input to be displayed.
top: u16
Offset from the top border of the canvas.
left: u16
Offset from the left border of the canvas.
width: u16
Width of the frame.
height: u16
Height of the frame.
interlaced: bool
True if the image is interlaced.
palette: Option<Vec<u8>>
Frame local color palette if available.
buffer: Cow<'a, [u8]>
Buffer containing the image data. Only indices unless configured differently.
Implementations§
source§impl Frame<'static>
impl Frame<'static>
sourcepub fn from_rgba(width: u16, height: u16, pixels: &mut [u8]) -> Frame<'static>
pub fn from_rgba(width: u16, height: u16, pixels: &mut [u8]) -> Frame<'static>
Creates a frame from pixels in RGBA format.
This is a lossy method. The gif
format does not support arbitrary alpha but only a 1-bit
transparency mask per pixel. Any non-zero alpha value will be interpreted as a fully opaque
pixel. Additionally, only 256 colors can appear in a single frame. The palette will be
reduced by the NeuQuant algorithm if necessary. Different frames have independent palettes.
Note: This method is not optimized for speed.
§Panics:
- If the length of pixels does not equal
width * height * 4
.
sourcepub fn from_rgba_speed(
width: u16,
height: u16,
pixels: &mut [u8],
speed: i32,
) -> Frame<'static>
pub fn from_rgba_speed( width: u16, height: u16, pixels: &mut [u8], speed: i32, ) -> Frame<'static>
Creates a frame from pixels in RGBA format.
speed
is a value in the range [1, 30].
The higher the value the faster it runs at the cost of image quality.
A speed
of 10 is a good compromise between speed and quality.
This is a lossy method. The gif
format does not support arbitrary alpha but only a 1-bit
transparency mask per pixel. Any non-zero alpha value will be interpreted as a fully opaque
pixel. Additionally, only 256 colors can appear in a single frame. The palette will be
reduced by the NeuQuant algorithm if necessary. Different frames have independent palettes.
§Panics:
- If the length of pixels does not equal
width * height * 4
. - If
speed < 1
orspeed > 30
sourcepub fn from_palette_pixels(
width: u16,
height: u16,
pixels: impl Into<Vec<u8>>,
palette: impl Into<Vec<u8>>,
transparent: Option<u8>,
) -> Frame<'static>
pub fn from_palette_pixels( width: u16, height: u16, pixels: impl Into<Vec<u8>>, palette: impl Into<Vec<u8>>, transparent: Option<u8>, ) -> Frame<'static>
Creates a frame from a palette and indexed pixels.
§Panics:
- If the length of pixels does not equal
width * height
. - If the length of palette >
256 * 3
.
sourcepub fn from_indexed_pixels(
width: u16,
height: u16,
pixels: impl Into<Vec<u8>>,
transparent: Option<u8>,
) -> Frame<'static>
pub fn from_indexed_pixels( width: u16, height: u16, pixels: impl Into<Vec<u8>>, transparent: Option<u8>, ) -> Frame<'static>
Creates a frame from indexed pixels in the global palette.
§Panics:
- If the length of pixels does not equal
width * height
.
sourcepub fn from_rgb(width: u16, height: u16, pixels: &[u8]) -> Frame<'static>
pub fn from_rgb(width: u16, height: u16, pixels: &[u8]) -> Frame<'static>
Creates a frame from pixels in RGB format.
This is a lossy method. In the gif
format only 256 colors can appear in a single frame.
The palette will be reduced by the NeuQuant algorithm if necessary. Different frames have
independent palettes.
Note: This method is not optimized for speed.
§Panics:
- If the length of pixels does not equal
width * height * 3
.
sourcepub fn from_rgb_speed(
width: u16,
height: u16,
pixels: &[u8],
speed: i32,
) -> Frame<'static>
pub fn from_rgb_speed( width: u16, height: u16, pixels: &[u8], speed: i32, ) -> Frame<'static>
Creates a frame from pixels in RGB format.
speed
is a value in the range [1, 30].
This is a lossy method. In the gif
format only 256 colors can appear in a single frame.
The palette will be reduced by the NeuQuant algorithm if necessary. Different frames have
independent palettes.
The higher the value the faster it runs at the cost of image quality.
A speed
of 10 is a good compromise between speed and quality.
§Panics:
- If the length of pixels does not equal
width * height * 3
. - If
speed < 1
orspeed > 30
source§impl Frame<'_>
impl Frame<'_>
sourcepub fn make_lzw_pre_encoded(&mut self)
pub fn make_lzw_pre_encoded(&mut self)
Replace frame’s buffer with a LZW-compressed one for use with Encoder::write_lzw_pre_encoded_frame
.
Frames can be compressed in any order, separately from the Encoder
, which can be used to compress frames in parallel.