2 releases
new 0.1.1 | Feb 21, 2025 |
---|---|
0.1.0 | Feb 21, 2025 |
#317 in Images
35 downloads per month
15KB
307 lines
Ingris Image Decoder/Encoder
Image Bibliothek für mein Retro Game Projekt Yinera. Ingris (de)komprimiert Bilddaten schnell und mit minimalem oberhead. Die Komprimierung der Daten erfolgt über miniz_oxide
Speichermethode
Ingris Dateien enthalten keine Palette und somit keine Farbinformationen. Es werden nur Index-Informationen gespeichert. Diese müssen seperat bereitgestellt werden um die Bilder anzeigen zu können. Der Vorteil hierbei ist, dass nicht unnötig Platz verschwendet wird, wenn jedes Bild seine eigene Palette mitbringt. Die Index-Daten können wahlweise als 4 oder 8 bit gespeichert werden, wobei im 4bit Modus durch die geteilten bytes nochmals mehr Größe eingespart wird.
Verwendung
use ingris::{Ingris, Image, FILE_VERSION};
// erstellen
const IMAGE: &[u8] = &[0, 0, 1, 2, 6, 6, 4, 5, 8, 8, 2, 15, 2, 29, 30, 31];
let image = Image::new(FILE_VERSION, 4, 4, IMAGE.into());
assert_eq!(image.bit_depth(), 8); // Das image hat indizes > 0x0F und somit mehr als 4bit
// schreiben
let path = Path::new("my-image.ing");
Ingris::write(path, &image).unwrap();
// lesen
let image = Ingris::read(path).unwrap();
// Weitere Verwendungsmöglichkeiten z.B. als Opengl Textur
use gl::*
TexImage2D(TEXTURE_2D, 0, R8 as i32,
image.width as i32,
image.height as i32,
0, RED, UNSIGNED_BYTE,
image.bytes().as_ptr() as *const _,
);
Dependencies
~240KB