Sólo una pequeña nota- cómo conseguir JPEGInfo para Windows (64 bits)? que no hay binarios Win32/Win64 en GitHub de autor, pero se puede hacer esto:
1) agarrar jpeginfo.exe
de este archivo: https://github.com/MoserMichael/cstuff/raw/master/img-archive/img-archive.zip
2) agarrar cygwin1.dll
de este archivo: ftp://mirror.internode.on.net/pub/cygwin/x86/release/cygwin64/cygwin64-2.6.0-1.tar.xz
Pruébelo desde la línea de comandos si funciona: jpeginfo --help
. Si hay información, funciona bien.
Cómo probar JPEGInfo de salida?
jpeginfo
devuelve 0 si el archivo está bien, pero devuelve 1, no solo cuando no lo es, sino también cuando encuentra algo que no comprende. A continuación, se genera un mensaje como este:
Warning: unknown JFIF revision number 2.01 1280 x 720 24bit JFIF N 122550 [WARNING]
En los archivos dañados que devuelve 1 y mensaje como este:
1328 x 2048 24bit JFIF N 1310080 Premature end of JPEG file [WARNING]
Por lo tanto es posible que desee probar la salida real no sólo código de retorno .
nota de la observación de la OP acerca lenta: se bifurcan un proceso externo y procesar la devolución es posiblemente incluso más lento que imagecreatefromjpeg()! – Willem
Puede que tengas razón, no tengo idea de qué tan lento es imagecreatefromjpeg. Supongo que la única forma de encontrarlo es comparar ambos. – Pat
Aunque realizar un proceso externo es lento, es la mejor opción. PHP es horrible en cuanto a los requisitos de memoria y velocidad cuando lee archivos de imágenes. Véase también [respuesta Travis'] (http://stackoverflow.com/questions/198438/efficiently-detect-corrupted-jpeg-file/2761021#2761021). – Jacco