situation:
images are binary coded. If you try to interpret/decode them as UTF-8, they can contain UTF-8 invalid characters (e.g. 0xFF)
problem:
if your database uses the UTF-8 encoding, you can’t save this invalid bytes in this database. (“invalid byte sequence warning”)
solution:
convert the image/binary data to an encoding, which consists of only UTF-8 valid/allowed characters. Such an encoding is e.g. base64. It converts all bytes to printable ASCII-characters (A-Z, a-z, 0-9, +, /, =), which can be saved in your database.
If you want to use C-library functions, you can use GLIB-library with the functions g_base64_encode() and g_base64_decode()
summary:
to save:  binary/image-data –> encode from binary-format to ‘base64’ —> save in database
to read:  read from database –> decode from ‘base64’ to binary-format –>  binary/image-data