Encontramos la contestación a este inconveniente, al menos eso creemos. Si tienes preguntas coméntalo, que sin dudarlo te responderemos
Solución:
Eche un vistazo a Intel IPP (Integrated Performance Primitives) (el enlace Wiki es mejor que el de Intel…) también funciona en AMD y tiene funciones para cambiar el tamaño de las imágenes (bilineal, vecino más cercano, etc.) y funciona en Linux y Windows.
No es gratis (pero no romperá el banco), pero es el más rápido que puedes encontrar.
Echa un vistazo a VIPS. Es el más rápido que he encontrado hasta ahora y es gratuito para uso comercial.
https://github.com/libvips/libvips/wiki/Speed-and-memory-use
En ese punto de referencia, es 2 veces más rápido que Pillow-SIMD, 5 veces más rápido que imagemagick, 6 veces más rápido que opencv, 8 veces más rápido que freeimage, etc. También tiene un uso de memoria drásticamente menor: más de 10 veces menos que imagemagick, por ejemplo.
Comentario de @Chris Becke:
“piense por un momento en esa declaración. ¿Qué parte de hacerlo en un solo paso (complicado) hará que sea más rápido? Las rutinas de decodificación de imágenes todavía necesitan decodificar cada píxel para que las rutinas de filtro los filtren. “
Ese no es siempre el caso. Por ejemplo, al decodificar un JPEG, puede pedirle a la biblioteca JPEG que le proporcione una imagen de tamaño 1/2, 1/4, 1/8 (o algo así; hace tiempo que no miro en detalle) que puede hacerlo sin tener que decodificar los detalles adicionales en absoluto, debido a la forma en que funciona JPEG. Puede ser mucho más rápido que una decodificación + escala completa.
(Obviamente, es posible que deba escalar un poco después si la imagen más pequeña no tiene el tamaño exacto que desea).
(Lo siento, solo puedo publicar esta respuesta como un comentario debido a la falta de reputación. Es la primera vez que intento publicar algo aquí. Si alguien quiere volver a publicar esto o algo similar como un comentario y eliminar mi respuesta, ¡siéntase libre!)