At the time of creation, when the database schema is created, the columns used to store data will be assigned a storage class. The storage class will define the type of data that can be input into each field in the database. The following are acceptable storage classes as defined by SQLite.org1:
NULL. The value is a NULL value.
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number.
TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE).
BLOB. The value is a blob of data, stored exactly as it was input.
Defining storage classes helps to dictate the preferred data type, or affinities, that can be entered into a database and increases cross compatibility.
When databases need to store files internally, they make use of BLOBs, or Binary Large Objects. BLOBs are used when the data is not easily defined or not typical, so BLOBs can basically be used to store anything.
Like the name suggests, BLOBs are comprised of binary data. The embedded PNG file was stored as a BLOB. This data can be exported and then opened with a compatible program.
Reference:
[1] https://for585.com/sqlitestorageclass
Sample database creation and assigning affinity types to columns in the Messages table.