Escala de salida libjpeg

¿Libjpeg permite / tiene rutinas para escalar la imagen de salida?

Tengo una imagen que se debe cambiar de tamaño al guardar y cargar desde, Proporcionar width1, height1 en input y obtener width2, height2 en output y realmente no puedo usar nada fuera.

Sí, libjpeg admite el escalado de imágenes, pero con algunas limitaciones.

Libjpeg versión 8c y superior admite el escalado M / 8 donde M es un número entero entre 1 y 16. La versión más común de libjpeg 6b es compatible con M de 1, 2, 4 y 8 solamente (es decir, reducción de potencia de 2).

Suministre el numerador y denominador de escala al objeto de descompresión utilizando scale_num y scale_denom. Ver jpeg_decompress_struct en jpeglib.h. Puede consultar djpeg.c para ver un ejemplo de uso.

Esto es mucho más rápido y potencialmente de mayor calidad que la deencoding de toda la imagen y luego la reducción de escala.

No, necesita escalarlo usted mismo (la interpolación lineal es la más fácil y rápida, pero proporciona píxeles cuadrados, bilinear / trilinear / bicubic es más complicado pero ofrece resultados más suaves) o utilizando una biblioteca que hará el trabajo sucio por usted. (marque OpenCV, SDL, imagemgick, libpipi, etc.)

Más sobre esto aquí , aquí .

Código real para una interpolación de vecino más cercano simple (sin optimizar):

dest[dx+dy*dest_width] = src[(dx*src_width/dest_width)+(dy*src_height/dest_height)*src_width] 

Solo itera dx y dy de acuerdo con dest_width y dest_height. Pero en realidad, usa una biblioteca para esto.