Compresser & enregistrer image en base64

Mon application reçoit des base64 fichiers d'image à partir du navigateur. J'ai besoin de les enregistrer sur le client. J'ai donc fait:

$data = base64_decode($base64img);
$fileName = uniqid() . '.jpg';
file_put_contents($uploadPath . $fileName, $data);
return $fileName;

Qui fonctionne très bien.

Maintenant, j'ai besoin de compresser & redimensionner l'image à max. 800 largeur & hauteur, le maintien de l'aspect ratio.

J'ai donc essayé:

$data = base64_decode($base64img);
$fileName = uniqid() . '.jpg';
file_put_contents($uploadPath . $fileName, $data);
return $fileName;

qui ne fonctionne pas (message d'erreur: "imagejpeg() s'attend à ce paramètre 1 pour être des ressources, chaîne de caractères donnée").
Et bien sûr, cela ne compresser, mais pas redimensionner.

Serait-il préférable d'enregistrer le fichier dans /tmp, le lire et de le redimensionner/déplacer via GD?

Grâce.

2ème partie

Grâce à @ontrack je sais maintenant que

$data = imagejpeg(imagecreatefromstring($data),$uploadPath . $fileName,80);

œuvres.

Mais maintenant, j'ai besoin de redimensionner l'image à un maximum de 800 de largeur et de hauteur. J'ai cette fonction:

function resizeAndCompressImagefunction($file, $w, $h, $crop=FALSE) {
    list($width, $height) = getimagesize($file);
    $r = $width / $height;
    if ($crop) {
        if ($width > $height) {
            $width = ceil($width-($width*($r-$w/$h)));
        } else {
            $height = ceil($height-($height*($r-$w/$h)));
        }
        $newwidth = $w;
        $newheight = $h;
    } else {
        if ($w/$h > $r) {
            $newwidth = $h*$r;
            $newheight = $h;
        } else {
            $newheight = $w/$r;
            $newwidth = $w;
        }
    }
    $src = imagecreatefromjpeg($file);
    $dst = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    return $dst;
}

J'ai donc pensé que je pouvais faire:

$data = imagejpeg(resizeAndCompressImagefunction(imagecreatefromstring($data),800,800),$uploadPath . $fileName,80);

qui ne fonctionne pas.