freeimage.h

FreeImage_JPEGCrop

DLL_API BOOL DLL_CALLCONV FreeImage_JPEGCrop(const char *src_file, const char
*dst_file, int left, int top, int right, int bottom);

Realiza un recorte sin pérdida en un fichero JPEG. A la entrada, src_file es el fichero JPEG de origen y dst_file el fichero JPEG de destino. Está permitido usar el mismo fichero de origen y destino: el fichero de origen será transformado y sobrescrito.

El rectángulo definido por los parámetros (left, top, right, bottom) es normalizado primero de modo que el valor de la coordenada izquierda sea menor que el de la derecha y el valor de la coordenada superior menor que el de la inferior. A continuación, el mapa de bits retornado queda definido por una anchura mayor o igual a (right - left) y una altura mayor o igual a (bottom - top) – ver la explicación más abajo.

Parámetros

  • left: especifica la posición izquierda del rectángulo de recorte.
  • top: especifica la posición superior del rectángulo de recorte.
  • right: especifica la posición derecha del rectángulo de recorte.
  • bottom: especifica la posición inferior del rectángulo de recorte.

FreeImage_JPEGCrop funciona reorganizando los datos comprimidos (coeficientes DCT), sin decodificar nunca por completo la imagen. De este modo, la operación de recorte es sin pérdida: no hay ninguna degradación de imagen, esto puede no ser cierto si se usa FreeImage_Load seguido por FreeImage_Copy, y después FreeImage_Save para realizar la misma conversión.

Para llevar a cabo esta operación sin pérdida, sin embargo, la anchura y altura del rectángulo de recorte deben ser ajustadas de modoq ue las dimensiones de la imagen sean múltiplo del tamaño iMCU (generalmente 8 o 16 pixels), porque la función sólo puede transformar bloques completos de datos de coeficientes DCT del modo deseado. Por esto la anchura o altura de salida pueden ser algo mayores que el tamaño de la imagen requerida.