PHp - erro de memória ao redimensionar uma imagem PNG

Eu tenho um script que cria uma miniatura de uma imagem enviada. funciona bem com jpgs, mas me dá um erro

Erro fatal: Permitido tamanho de memória de 67108864 bytes esgotados (tentou alocar 26250000 bytes)

quando eu carrego uma imagem png.

O script é:

//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 eu disse, funciona perfeitamente com JPGs e também com GIFs. Esse erro de memória aparece apenas com PNGs, e eu usei apenas uma imagem de 1.2Mb.

Como posso resolver isso? obrigado Patrick