Ecrire le contenu d'un canvas HTML5 vers image
Salut,
Je bloque sur une feature que je suis en train de faire de récupération d'un canvas dessinable (fait avec raphael JS) ,
j'envoi les datas de la façon suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| var dataURL = document.getElementById('renderCanvas').toDataURL("image/png");
dataURL = dataURL.replace('data:image/png;base64,','');
$.ajax(
{
url : 'ajax/export-image.php',
data : {image:dataURL},
type : 'post',
dataType :'json',
success: function (j)
{
}
} |
avec mes outils de debug, je vois bien les datas passé lors de la requete XHR
Code:
image=iVBORw0KGgoAAAA...
le soucis c est que coté PHP , je recois $_POST['image'] vide.. pourtant mon php.ini limite les données post à 700M
Code:
post_max_size = 700M
autant vous dire que je suis bien en dessous avec mon image de 400*600..
sur ce serveur, aucun soucis pour d autres types de variables post, mais la ca coince, si je modifie les données postés pour rajouter, par exemple test=1, je le récupère bien coté PHP, mais PAS mon image.
du coup , je me suis tourné vers file_get_contents('php://input');, la je récupere bien mon buffer d image, mais en l ecrivant dans un fichier, apres plusieurs test, d abord un base64_decode puis fwrite ou imagefromstring ou file_puts_contents , j'ai toujours un PNG invalide d écrit (impossible de le lire dans photoshop ou l apercu de l OS)
pourtant à regarder le fichier dans un editeur, l entete a l air (a peu près) correcte :
je ne sais plus trop ou regarder..
code PHP ecrivant l image
Code:
1 2 3 4 5 6 7
| $data = $_POST['image'];
$img = $data;
$data = base64_decode($img);
$rand_name = $userId.'_'.rand(10000,999999).'.png';
$fp = fopen('medias/player_painting/'.$rand_name,'wb');
fwrite($fp,$data);
fclose($fp); |
une suggestion ?