Struct tiff_encoder::ByteBlock
source · Expand description
Datablock that consists of a list of bytes.
It is possible to store any block of data in a ByteBlock,
but that would require to know the Endianness of the file
beforehand, so the bytes are written in the correct order.
Using a Datablock, on the other hand, allows to make use
of the functionality of an EndianFile, so the data can be
written without worrying about the endianness.
Examples
Creating a ByteBlock from a Vec<u8>:
use tiff_encoder::*;
// A vector holding arbitrary u8 data.
// This is the data we want to store as a Byteblock.
let data_8bits: Vec<u8> = vec![0; 65536];
// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(data_8bits);Creating a ByteBlock from a Vec<u32>:
// Crate byteorder will be used to write 32-bit information in a 8-bit buffer.
use byteorder::io::WriteBytesExt;
use tiff_encoder::*;
// A vector holding arbitrary u32 data.
// This is the data we want to store as a Byteblock.
let data_32bits: Vec<u32> = vec![0; 65536];
// First, let's store the data in a u8 buffer.
let mut image_bytes = Vec::with_capacity(262144); // 65536*4 (each u32 has a size of 4 bytes)
for val in data_32bits {
// A little endian TIFF file is assumed in this example.
image_bytes.write_u32::<LittleEndian>(val).unwrap();
}
// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(image_bytes);Tuple Fields§
§0: Vec<u8>Implementations§
Trait Implementations§
source§impl Datablock for ByteBlock
impl Datablock for ByteBlock
source§fn write_to(self, file: &mut EndianFile) -> Result<()>
fn write_to(self, file: &mut EndianFile) -> Result<()>
Writes this
Datablock to an EndianFile. The number of bytes
written must be exactly same number as returned by size(&self). Read more