PHp: error de memoria al cambiar el tamaño de una imagen PNG

Tengo un script que crea una miniatura de una imagen cargada. Funciona bien con jpgs, pero me da un error.

Error grave: el tamaño de memoria permitido de 67108864 bytes se agotó (se intentó asignar 26250000 bytes)

cuando subo una imagen png

El guión es:

//create thumbnail; $modwidth and height are calculated in another part of the script
//$original is the path to the full sized image

$tn = imagecreatetruecolor($modwidth, $modheight); 
switch (strrchr($new_image_name,'.')) {
  case ".jpg":
    $image = imagecreatefromjpeg($original);
    break;
  case ".jpeg":
    $image = imagecreatefromjpeg($original);
    break;
  case ".png":
    $image = imagecreatefrompng($original);
    break;
  case ".gif":
    $image = imagecreatefromgif($original);
    break;
}
imagecopyresampled($tn, $image, 0, 0, $x_pos, $y_pos, $modwidth, $modheight, $width, $height); 
switch (strrchr($new_image_name,'.')) {
  case ".jpg":
    imagejpeg($tn, $target_path, 100);
    break;
  case ".jpeg":
    imagejpeg($tn, $target_path, 100);
    break;
  case ".png":
    imagepng($tn, $target_path, 0);
    break;
  case ".gif":
    imagegif($tn, $target_path);
    break;
}

Como he dicho, funciona perfectamente con JPG y también con GIF. Ese error de memoria aparece solo con PNG y solo he usado una imagen de 1.2 Mb.

Como puedo resolver esto? gracias patrick

Respuestas a la pregunta(2)

Su respuesta a la pregunta