INNER CODE UNIT · C++
result
7thSamurai/steganography · src/image.cpp:28
int result = stbi_write_png(path.c_str(), width, height, 4, image.get(), width * 4);
return result != 0;
}
void Image::encode(const std::uint8_t *data, std::size_t size, EncodingLevel level, std::size_t offset) {
auto image = this->image.get() + offset;
if (level == EncodingLevel::Low) {
for (auto i = 0; i < size; i++, image += 8) {
image[0] = (image[0] & ~0b1) | ((data[i] >> 0) & 0b1);
image[1] = (image[1] & ~0b1) | ((data[i] >> 1) & 0b1);
image[2] = (image[2] & ~0b1) | ((data[i] >> 2) & 0b1);
image[3] = (image[3] & ~0b1) | ((data[i] >> 3) & 0b1);
image[4] = (image[4] & ~0b1) | ((data[i] >> 4) & 0b1);
image[5] = (image[5] & ~0b1) | ((data[i] >> 5) & 0b1);
image[6] = (image[6] & ~0b1) | ((data[i] >> 6) & 0b1);
image[7] = (image[7] & ~0b1) | ((data[i] >> 7) & 0b1);