Casi todos los formularios de subida informan de cualquier fallo con la misma frase. Ese único mensaje esconde al menos cuatro comprobaciones distintas, y cada una se arregla de otra manera.
Comprobación uno: el límite de bytes
El límite más habitual y el único en el que suele pensar la gente. Se mide en bytes, no en megapíxeles, así que una imagen de aspecto modesto recién salida de un móvil moderno puede incumplirlo sin problema.
Se arregla comprimiendo a una cifra por debajo del límite declarado, no justo en él. Algunos sistemas miden la petición codificada y no el archivo, y una subida que se codifica en base64 por el camino ocupa alrededor de un tercio más que el archivo en disco. Apuntar a un pequeño porcentaje por debajo del límite no te cuesta casi nada y elimina toda la duda.
Comprobación dos: el límite de dimensiones
Es independiente del tamaño de archivo y muchas veces no está documentado. Un formulario puede exigir una foto de no más de 1200 píxeles de ancho por pequeño que sea el archivo. Comprimir más nunca lo va a satisfacer: hay que redimensionar. Si el formulario indica un tamaño de visualización, lo normal es que además imponga un máximo cercano a él.
Comprobación tres: el tipo MIME
Los servidores cuidadosos no se fían de la extensión del archivo: leen los primeros bytes e
identifican el formato por su firma. Renombra un PNG a .jpg y un servidor estricto seguirá viendo
un PNG, porque eso es lo que dicen los bytes.
Por eso convertir sirve y renombrar no. Y por eso también puede fallar un archivo exportado como «JPEG» desde una herramienta de diseño: algunos exportadores escriben una variante que la biblioteca del servidor rechaza.
Comprobación cuatro: espacio de color y variante de codificación
Menos frecuente, pero real. Los JPEG en CMYK, los PNG de 16 bits y los JPEG progresivos son archivos perfectamente válidos que algunas bibliotecas antiguas del lado del servidor rechazan de plano.
Recodificar arregla los casos a los que puede llegar. ToolZool descodifica a píxeles simples de 8 bits y escribe JPEG baseline por defecto, así que un PNG de 16 bits vuelve como 8 bits y un JPEG progresivo vuelve como baseline; las dos son las variantes que un servidor quisquilloso tiene más probabilidades de aceptar. El caso incómodo es el JPEG en CMYK: es un archivo pensado para imprenta y no para la web, y la solución fiable es volver a exportarlo en RGB desde donde se generó.
Cómo distinguirlas
Prueba con una imagen de test deliberadamente diminuta: unos pocos kilobytes, unos cientos de píxeles, JPEG baseline sin más. Si esa sube, el problema está en tu archivo y ya sabes qué eje tocar: empieza por el compresor y, si el límite es estrecho, cómo bajar de 50 KB explica en qué orden cambiar las cosas. Si la imagen de prueba también falla, el problema es el formulario, la sesión o el navegador, y por mucho que recodifiques no habrá manera.

