freeimage.h

FreeImage_CloneMetadata

DLL_API BOOL DLL_CALLCONV FreeImage_CloneMetadata(FIBITMAP *dst, FIBITMAP *src);

Copia todos los metadatos ontenidos en src a dst, con excepción de los metadatos FIMD_ANIMATION (estos metadatos no se copian porque pueden causar problemas cuando se guarda a GIF). Cuando el modelo de metadatos src ya existe en dst, el modelo de metadatos de dst se borra antes de copiar los de src. Cuando un modelo de metadatos ya existe en dst y no en src, se deja sin tocar.

La información de resolución horizontal y vertical (retornada por FreeImage_GetDotsPerMeterX y FreeImage_GetDotsPerMeterY) también se copia desde src a dst.

La función retorna TRUE si tiene éxito y FALSE en caso contrario (por ejemplo cuando src o dst no sean válidos).

Todas las funciones FreeImage con una firma del tipo

FIBITMAP *dst = FreeImage_Function(FIBITMAP *src, ...)

clonarán internamente lso metadatos src en dst.

Así que, nunca será necesario usar esta función cuando se usen funciones FreeImage.

Sin embargo, se debe usar cuando se crean funciones de procesamiento propias.

Las funciones FreeImage_CloneMetadata clonan metadatos desde una imagen a otra. Aunque la imagen de destino contenga todos los metadatos de la imagen origen, algunos metadatos no pueden ser guardados a disco, ver por ejemplo este pseudocódigo:

    FreeImage_CloneMetadata(dst_jpeg, src_jpeg);
    // dst_jpeg has the same metadata as src_jpeg
    FreeImage_Save(FIF_JPEG, dst_jpeg, "example.jpg", 0);
    FIBITMAP *new_jpeg = FreeImage_Load(FIF_JPEG, "example.jpg", 0);
    // new_jpeg is missing some metadata