1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
//! A library for encoding arbitrary data //! into images, a tecnique also known as *steganography*. //! //! This is the foundation for the `seagul` cli application. //! //! # Basic example //! //! ## Encode //! //! Read an image and resave it with some verses encoded into it, using the //! last 2 bits on the blue channel of each pixel to encode them //! //! ```rust //! let encode_result = super::ImageEncoder::from("source.png") //! .set_use_n_lsb(2) //! .set_use_channel(RgbChannel::Blue) //! .encode_data( //! b" //! Midway upon the journey of our life //! I found myself within a forest dark, //! For the straightforward pathway had been lost. //! Ah me! how hard a thing it is to say //! What was this forest savage, rough, and stern, //! Which in the very thought renews the fear. //! So bitter is it, death is little more; //! But of the good to treat, which there I found, //! Speak will I of the other things I saw there. //! I cannot well repeat how there I entered, //! So full was I of slumber at the moment //! In which I had abandoned the true way.", //! ); //! //! assert!(encode_result.is_ok(), "Encoding failed"); //! //! encode_result //! .unwrap() //! .save("encoded.png", ImageFormat::Png) //! .expect("Could not create output file"); //! ``` //! //! ## Decode //! //! ```rust //! let decoded = ImageDecoder::from("encoded.png") //! .set_use_n_lsb(2) //! .set_use_channel(RgbChannel::Blue) //! .until_marker(Some(b"way.")) // <- If you know how the message ends //! .decode(); //! //! assert!(decoded.is_ok()); //! //! let decoded = decoded.unwrap().as_raw(); //! //! println!("Raw decoded:\n{}", decoded_string); //! //! ``` //! //! # Supported formats //! //! While almost every major image format is supported as input, at the moment only //! PNG and BMP are supported as output formats. JPEG and other formats support is planned. /// The module holding all the base components and traits for the library pub mod prelude; /// The module holding all the encoders pub mod encoder; /// The module holding all the decoders pub mod decoder;