Buenas tengan, estoy teniendo una duda con respecto al como es posible crear un archivo de imagen mediante código, tomando en cuenta que todos los archivos tienen un trasfondo binario

, y quisiera saber si alguen me pudiera explicar , por lo menos con pseudocódigo como sería posible generar una cadena de información de 1 y 0´s (o codigo hexadecimal, la verdad no tengo idea como esta confomada un formato de imagen ya que nunca tuve la oportunidad de estudiar una ingeniería

)
dejo un ejemplo base para dar idea:
* ¿Como se podria generar/exportar una imagen... digamos .png a partir de leer un archivo .jpg (o mediante puro codigo

), y que el archivo nuevo sea legible por un programa que muestre imagenes?
-Esto por supuesto ya sabiendo los codigos de los metadatos, el número mágico, etc.
Perdon si esta posteado en la sección equivocada, pero tengo un considerable conocimiento en c++ y debido al manejo de memoria dinámica que ofrece este lenguaje me parece el lugar adecuado para postear mi duda

-De antemano gracias por su tiempo