robisz tak:
najpierw robisz zaczep do źródłowego pliku (w tym przypadku gif):
<?php
$plik=imagecreatefromgif($plik_zrodlowy);
?>
a teraz zapisujesz go pod dowolnym formatem, czyli:
<?php
imagejpeg($plik);
?>
lub do png:
<?php
imagepng($plik);
?>
Dodam, że istnieją funkcje imagecreatefrompng(), imagecreatefromjpeg(), imagegif(), itd. więc przerabiać możesz z każdego na każdy (oczywiście jak przerabiasz z gifa, to pamiętaj, że inne formaty nie mają przeźroczystości ani animacji, więc może coś nie zadziałać)
EDITpomyłka, jak zapisujesz to musisz jeszcze podać plik docelowy

<?php
imagepng($plik, $plik_docelowy);
?>