convert -alpha on -colorspace sRGB -depth 16 INPUTFILE.EXT -depth 16 -colorspace sRGB -alpha on png64:output.png
convert -profile INPUTFILE.EXT -alpha on -colorspace sRGB -depth 16 INPUTFILE.EXT -depth 16 -colorspace sRGB -alpha on -profile INPUTFILE.EXT png64:output.png
Functions
fn decode_16bit_png(filepath: &str) -> Result<PNG>
fn encode_png(mut png: PNG, depth: u8, result: &str) -> Result<bool>
PNG16 Structs/Const
pub const DEPTH_16: u8 = 0x10;
pub const DEPTH_8: u8 = 0x08;
pub struct PNG_IHDR {
pub total_bytes: u32,
pub width: u32,
pub height: u32,
pub depth: u8,
pub color_type: u8,
pub compression: u8,
pub filter: u8,
pub interlace: u8,
pub crc: u32,
}
pub struct PNG {
pub ihdr: PNG_IHDR,
pub header: Vec<u8>,
pub rgb: Vec<u16>,
pub alpha: Vec<u16>,
}
Usage
extern crate png16;
...
let mut png = match png16::decode_16bit_png("16bit.png") {
Ok(png) => png,
Err(e) => {
panic!("Error Decoding PNG: {:?}", e);
},
};
match png16::encode_png(png, png16::DEPTH_16, "result.png") {
Ok(_) => (),
Err(e) => panic!("Error Encoding PNG: {:?}", e),
};