Y bueno viejo, deja de matarte y en el
 
elseif ( $ext == "png" ) { 
                imagepng( $thumb, $destino, $calidad);  
agarras y le pones asi mira...
elseif ( $ext == "png" ) { 
                imagepng( $thumb, $destino, substr($calidad,0,1));  
entonces si tu numero de calidad vien por la variables de la funcion, vas a tener siempre el primer digito... y listo!!!  


 
 
A mi me ayudaste pq derrepente me empezo a tirar el mismo error que a vos y llegue hasta aca y lei tu post que fue como un milagro para mi... jeje
Salutes