MdaUZH: С разными расширениями - по switch'у. Функция imagepng принимает в первом параметре ресурс-картинку, которую выдает imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif и парочка других. Во втором параметре, если его указать, хранится имя файла, в который записывается png. Если Вам так уж нужно, могу показать кусок кода:
$filename = "index.jpeg"; // Загруженный файл, здесь указываете имя
$extension = strtolower(end(explode(".", $filename))); // Получаем расширение и переводим его в нижний регистр
$destination = "index.png"; // Куда сохранить
switch($extension) { // Смотрим расширение
case "jpeg":
case "jpg": // Файл jpeg может иметь разные расширения
imagepng(imagecreatefromjpeg($filename), $destination, 100); // Сохраняем jpeg как png
break;
case "gif":
imagepng(imagecreatefromgif($filename), $destination, 100); // Сохраняем gif как png
break;
case "png":
rename($filename, $destination); // Если уже png, не менять
// Если файл загружается (его выбирает пользователь через форму), безопаснее сделать так:
// move_uploaded_file($filename, $destination);
break;
default:
echo "Неправильное расширение файла";
}