A simple and easy-to-use tool to embed messages into images.

Protect your images embedding custom copyright/license messages. Message data can be compressed and encrypted, data distribution inside image can be customized.

rImageShield can be used for free as a WebAssembly online tool.

rImageShield Features

  • Multiple input image file formats: .png, .qoi, .bmp, .tga, .jpg, .raw
  • Editable text input message, up to 160 characters
  • Message compression and encryption support (including MAC)
  • Multiple message visualization modes: ASCII, Hexadecimal, Grayscale
  • Uniform and PRNG data distribution settings
  • Detailed image, message and distribution information
  • Export image as .png, .qoi or .raw
  • Image shield as a visual watermark
  • Multiple UI styles supported, select your best style
  • Export protected image as PNG, QOI or RAW

rImageShield Standalone Additional Features

  • Greater and smaller size images
  • Greater message sizes, up to several KB
  • Message loaded from text/binary files
  • Encryption algorithm customization
  • PRNG distribution customization
  • Disable visual image shield and config options
  • Command-line support for batch image processing
  • Completely portable (single-file, no-dependencies)

rImageShield Usage

Steps to add a message to an image:

  1. Load an image by drag&drop or the OpenFile button on top toolbar
  2. Edit text message on provided textbox, grid shows message details
  3. Select message compression/encryption options (in case of encryption, define a custom password)
  4. Select message data distribution options on right panel, uniform or pseudo-random
  5. Export image with embedded message (.png, .qoi or .raw)

WARNING: Due to the complexity of the tool, it's highly recommended to try reloading images with embedded messages after exporting them to VERIFY message has been correctly embedded and could be recovered.

 In case of finding some bug, feel free to open and issue in raylibtech github repo or send a mail to ray[at]raylibtech.com.


rImageShield FAQ

How does rImageShield work?

This tool uses a technique called steganography that consists of embedding a message within another message (usually called a carrier). In this case, our carrier is the image and the message is actually some text defined by users.

What are the practical uses of rImageShield?

This tool is intended to embed copyright/license messages into images to allow identifying the copyright-holders of the image with no need for additional external files.

How is the message embedded into the image?

Message is defined by a number of bits (usually 8 bits per character); those bits are distributed along the image pixels, using the LSB bits that conform the pixels. One pixel can contain up to 4 bits, so, 1 text character could be contained in 2 random image pixels. Note that a 2048x2048@RGB image has 4194304 pixels and +16 millions of LSB bits that can be modified. For a message that consists of 160 characters, only 1280 bits (160x8 = 1280 bits) of the image pixels are slightly modified.

Are the image pixel colors modified?

Yes, but in practice only some pixel are slightly modified and it's imperceptible by the human eye.

How are the message bits distributed around the image?

rImageShield offers two possible distribution methods: Uniform and Random. Uniform distribution allows distributing the bits in an uniform way, with options to select an offset and a spacing. Random uses a pseudo-random numbers generator to distribute the bits in a more uniform way around the image.

What image file formats are supported?

rImageShield supports input images as .png, .qoi, .bmp, .tga.jpg and .raw. It can export the image with the embedded message as lossless file formats: .png, .qoi and .raw.

What is the maximum message size?

rImageShield online version is limited to text messages of 160 characters (bytes) long. Other kind of messages and with greater sizes could be supported per-client request.

Is it possible to lose/corrupt the embedded message?

Yes, if the exported image is edited with an image-editor software and pixel colors are changed (i.e. brightness, contrast, hue...) or image is cropped/resized. Also, if the image is re-saved as a lossy image file format (like .jpg) the pixel colors change and consequently the message data is corrupted.

Is it possible to recover the embedded message?

Yes, knowing the distribution method and distribution parameters the embedded message can be recovered. But note that distributed message could have been previously compressed and/or encrypted, in those cases retrieving the original message couls also requires a password.

How can I retrieve the embedded message?

Just opening the image with embedded message. Program automatically tries to detect if a message has been previously embedded in that image and tries to recover it, asking for a password if required. In any case, when a message is detected in an image, independently if the message could be recovered or not, the program is locked to avoid embedding a new message into that image.

Could an image with an embedded message being not detected when opening with rImageShield?

In that case, the message was probably corrupted and consequently lost. That image will be treated as an empty image, ready to store a new message.

How can I improve message protection on rImageShield?

If desired, rImageShield offers additional options to protect the plain text message. It can be compressed (it usually reduces the size of the message) and it can also be encrypted w/o MAC. For encryption, a password is required and the same password should be provided if trying to load an image with a message embedded.

What algorithm is used for compression?

By default, DEFLATE algorithm is used.

What algorithm is used for encryption?

By default, XChaCha20 is used, combined with Poly1305 for MAC generation.

Are those methods secure? Can my embedded message be retrieved by other people?

It's very secure. Data is distributed around the image so the distribution method is required to get back the required bits from the image pixels. Also, if message is encrypted, the original password must be provided to decrypt it.

Can I upload my image with the copyright message into social networks? Can I send image by mail?

Unfortunately some social networks and mail services could recompress the images to reduce size, changing the pixel colors in the process, in those cases the message could be lost but some social networks and mail services offer options to avoid images recompression or modification.

What is the random-colors border added to images?

It's the image shield and it's used as a visual watermark to identify the image as protected, so people seeing the image could know that image contains a copyright/license message embedded.

Is it possible to remove image shield?

Yes, when a message is detected and successfully retrieved the shield is removed from the image.

How could I check if my image has been stolen?

Only the creator of the image has the original image, that should be kept save and unpublished, and the image with the copyright message embedded. If a published image (with embedded copyright) has been stolen and published by someone else it can be demonstrated using the embedded (and password-protected) copyright message that only the original author can show.

If someone steals my image and edits with an image-editor to remove message, how can I demonstrate the image had my copyright?

Proof through the inverse: if it doesn't contain your copyright, it's an stolen image and not the original. You should always keep your original image (previous to message embeding) as a safe-guard.

Could this tool protect my images from being stolen for NFT minting?

This is one of the aims of rImageShield, add an extra protection layer embedded into the image to identify the real copyright-holders and be able to demonstrate it in a reliable way.

Could the NFT markets use this tool to prevent unauthorized minting?

Actually this tools is intended to avoid the image stealing for NFTs creation but, potentially, it could be used.

How much does it cost the standalone complete version of this tool?

The standalone complete version of this tool is licensed per client needs. Note that the tool could be customized to increase message protection levels.

Please, send me your questions to ray[at]raylibtech.com to be added to the FAQ!

rImageShield Custom

Do you like this tool? Do you want a custom version for your company? Do you need it for LinuxmacOSAndroidRaspberry Pi or HTML5? Just get in touch: ray[at]raylibtech.com

rImageShield Issues & Feedback

You can report tool issues and feedback here: https://github.com/raylibtech/rtools

rImageShield License

rImageShield online tool can be used completely for free but the tool has some constraints.

rImageShield Standalone desktop tool with command-line and additional features is distributed by client request.

In any case, consider a donation to help the author keep working on software for games development.

Copyright (c) 2022 raylib technologies (@raylibtech)

Rated 5.0 out of 5 stars
Authorraylib technologies
Made withraylib
Tagsimage, raygui, raylib, security, steganography, tool, viewer
Average sessionDays or more
InputsKeyboard, Mouse
LinksHomepage, Twitter, LinkedIn

Development log

Leave a comment

Log in with itch.io to leave a comment.