Je suis en train d'utiliser l'outil JavaScript "Canvas2Image" de Nihilogic pour convertir des dessins de canvas en images PNG. Ce dont j'ai besoin maintenant, c'est de transformer ces chaînes base64 que cet outil génère en fichiers PNG réels sur le serveur, en utilisant PHP.
En bref, ce que je fais actuellement, c'est de générer un fichier côté client en utilisant Canvas2Image, puis de récupérer les données encodées en base64 et de les envoyer au serveur en utilisant AJAX :
// Générer le fichier image
var image = Canvas2Image.saveAsPNG(canvas, true);
image.id = "canvasimage";
canvas.parentNode.replaceChild(image, canvas);
var url = 'hidden.php',
data = $('#canvasimage').attr('src');
$.ajax({
type: "POST",
url: url,
dataType: 'text',
data: {
base64data : data
}
});
À ce stade, "hidden.php" reçoit un bloc de données qui ressemble à data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABE...
À partir de ce point, je suis un peu perdu. D'après ce que j'ai lu, je crois que je suis censé utiliser la fonction imagecreatefromstring de PHP, mais je ne suis pas sûr de comment créer une image PNG réelle à partir de la chaîne encodée en base64 et la stocker sur mon serveur. Aidez-moi, s'il vous plaît!
0 votes
Vous devez l'analyser. vous pouvez extraire le type d'image à partir de là, puis utiliser base64_decode et enregistrer cette chaîne dans un fichier selon votre type d'image
0 votes
@Constantine Pouvez-vous être plus précis, s'il vous plaît?
7 votes
$data = $_REQUEST['base64data']; $image = explode('base64,', $data); file_put_contents('img.png', base64_decode($image[1]));
0 votes
Vous pouvez poster le code complet, de la capture d'écran jusqu'à l'envoi des données, cela ne fonctionne pas pour moi.
0 votes
Essayez ceci, cela a fonctionné pour moi. $base64string = ''; $uploadpath = 'VOTRE CHEMIN DE RÉPERTOIRE DE TÉLÉCHARGEMENT'; $parts = explode(";base64,", $base64string); $imagebase64 = base64_decode($parts[1]); $file = $uploadpath . uniqid() . '.png'; file_put_contents($file, $imagebase64);