Ekledim ama oval yapamadım:
<?php
$ana_resim_yolu = 'resim.png';
$ana_resim = imagecreatefromjpeg($ana_resim_yolu);

$oval_resim_yolu = 'oval.png';
$oval_resim = imagecreatefrompng($oval_resim_yolu);

$oval_genislik = imagesx($oval_resim);
$oval_yukseklik = imagesy($oval_resim);

$ana_genislik = imagesx($ana_resim);
$ana_yukseklik = imagesy($ana_resim);

$x = ($ana_genislik - $oval_genislik) / 2;
$y = ($ana_yukseklik - $oval_yukseklik) / 2;
imagecopy($ana_resim, $oval_resim, $x, $y, 0, 0, $oval_genislik, $oval_yukseklik);

header('Content-Type: image/jpeg');
imagejpeg($ana_resim);

imagedestroy($ana_resim);
imagedestroy($oval_resim);
?>
biraz araştırdım resmi oval yaptım ama tam istediğim gibi olmadı:
<?php

$resim_yolu = 'oval.png';
$resim = imagecreatefrompng($resim_yolu); // eğer jpeg bir resim kullanıyorsan imagecreatefromjpeg fonksiyonunu kullan

$genislik = imagesx($resim);
$yükseklik = imagesy($resim);

$mask_genislik = $genislik;
$mask_yukseklik = $yükseklik;
$mask = imagecreatetruecolor($mask_genislik, $mask_yukseklik);
$mask_rengi = imagecolorallocate($mask, 255, 255, 255);
imagefilledellipse($mask, $mask_genislik / 2, $mask_yukseklik / 2, $mask_genislik, $mask_yukseklik, $mask_rengi);
imagecolortransparent($mask, $mask_rengi);

$resim_maskeli = imagecreatetruecolor($genislik, $yükseklik);
imagecopymerge($resim_maskeli, $resim, 0, 0, 0, 0, $genislik, $yükseklik, 100);
imagecopy($resim_maskeli, $mask, 0, 0, 0, 0, $genislik, $yükseklik);

header('Content-Type: image/png');
imagepng($resim_maskeli);

imagedestroy($resim);
imagedestroy($mask);
imagedestroy($resim_maskeli);
?>