Bien cojamos la calculadora a ver....
Suponemos:
$anchura = 144;
$hmax = 150;
Y la resolución de imagen siguiente:
3072x2304px
$ratio = (3072 / $anchura); // 3072/144 = 21,333333333333333333333333333333
$altura = (2304 / $ratio); // 2304/21,333333333333333333333333333333 = 108,00000000000000000000000000002
Código:
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
Como Altura = 108 no es mayor que hmax = 150 no se cumple el if.
¿alguien ve algo extraño? yo no :S
Cita: Otra de las causas que puedo llegar a barajar, es que sea tu server el que tenga limitaciones en las subidas de los archivos por "peso" o "timeout" de ejecucion... Por lo que tiene algo más de sentido que al efectuar escalas previas de estos archivos grandes se ejecute el script sin problemas y en caso contrario, de problemas.
El peso del archivo no da problemas, puesto que he probado imágenes de 3072x2304px de peso 55kb y tampoco hace el resize, es por tanto la resolución el punto determinante. No le veo el sentido.