8768 sujets

Développement web côté serveur, CMS

Bonjour.
Voilà je cherche à sauvegarder une image sur un serveur à partir d'une webcam, pour ce faire j'ai récupéré le flux webcam en JS et j'ai envoyé en POST le contenu, à partir de là, rien ne vas plus.

je décode ma chaine

$image = base64_decode($_POST['image']);


je transforme ma chaine en image via

$img = imagecreatefromstring($image);


et enfin je traite

imagepng($img, '/img/test.png');

mais rien ne ce passe, mon fichier est vide Smiley ohwell .
je vous mets le code incriminé au cas ou Smiley decu

if (isset($_POST['image']))
{
	$image = base64_decode($_POST['image']);
	$img = imagecreatefromstring($image);
	if ($img !== FALSE)
	{
		imagepng($img, '/img/test.png');
		echo '<img src="/img/test.png">';
	}
}


je ne sais pas ce que vous en pensez, personnellement je ne vois pas l'erreur Smiley confus
Salut,

est ce que $_POST['image'] contient quelque chose ? (debug ou var_dump($_POST);

Attention imagepng($img, '/img/test.png') va écrire le fichier test.png dans le répertoire img situé à la racine du système de fichier (si bien sur php en a le droit).

<img src="/img/test.png"> demande d'afficher un fichier test.png dans un répertoire img situé à la racine de l'url de base.

en claire si la page se situe sur alsacreations.com le navigateur va demander alsacreations.com/img/test.png.
Il y a peu (pas du tout même) de chance que le documentRoot de serveur web soit à la racine du file systeme (généralement c'est dans chose enfant d'un répertoire www).
il faut que image png aille écrire le fichier dans le documentRoot du serveur ou vhost utilisé pour qu'il soit accessible depuis un navigateur.

url (http; navigateur -> serveur) != path (système de fichier du serveur inconnue de l'extérieur).


@+
Salut et merci de ta réponse,

Oui poste['image'] contient bien l'image, enfin une succession de caractère incompréhensible qui commence par "data:image/png base64;", enfin je le supprime vu que je le décode après.
Pour info je retourne le résultat de ces lignes JavaScript :

var img_string = image.toDataURL('image/png', 0)
img_string = img_string.replace("data:image/png base64;", "");

"image" étant le contenue de mon canvas qui fonctionne parfaitement.

J'ai suivie ton conseille, enfin je pense et j'ai modifier la ligne :

imagepng($img, 'apps/camagru/htdocs/img/test.png');

Mais ça ne change rien Smiley ohwell

J'ai essayé de créer un fichier dans lequel j'écris l'image, le tout, sous l'extension 'png' mais ça ne donne rien de probant, j'ai une jolie suite de caractère inutile...
Modifié par Rouffy (27 Jan 2017 - 14:01)