DownsampleImages

Administración de documentos, Manejo de imágenes

Descripción

Reduce la resolución de los XObjects de imagen incrustados cuya resolución efectiva supera MaxDPI. Cada imagen candidata se decodifica, se remuestrea conservando su proporción y se recodifica como DCTDecode (JPEG) cuando Quality es mayor que 0, o como FlateDecode (PNG) sin pérdida cuando Quality es 0; el flujo de imagen y las entradas /Filter, /Width y /Height se reescriben en el sitio

Sintaxis

Delphi

Function TPDFlib.DownsampleImages(MaxDPI, Quality, Filter: Integer): Integer;

Parámetros

MaxDPIUmbral de resolución en DPI; las imágenes cuya resolución efectiva estimada supera este valor se remuestrean. Los valores por debajo de 24 abortan la llamada
QualityCalidad de compresión JPEG entre 1 y 100 usada para la recodificación; pase 0 para recodificar sin pérdida como PNG
Filter0 selecciona el filtro de caja, que promedia bloques de píxeles de origen; cualquier otro valor selecciona el remuestreo bilineal

Valores devueltos

El número de XObjects de imagen reescritos, o 0 cuando MaxDPI está por debajo de 24 o ninguna imagen superó el umbral

Comentarios

La resolución efectiva se estima a partir del ancho declarado en píxeles de la imagen frente a una página de ancho Carta, de modo que la pasada es conservadora y las imágenes de calidad de impresión se dejan intactas ante la duda

Las imágenes menores de 8 x 8 píxeles declarados, las que fallan al decodificar y las cuyo tamaño remuestreado no resultaría menor que el original se omiten sin hacer fallar la llamada

Ejemplo

PDF.LoadFromFile('scan.pdf', '');
PDF.DownsampleImages(150, 80, 0);
PDF.SaveToFile('scan-compressed.pdf');