Enregistrer canvas au format JPG sur un serveur
Bonjour :)
Habitué a developper en asp classique, je met le nez dans le .net et j'ai suivi quelques tuto sur l'utilisation des canvas...
Mon but est d'enregister le dessin de l'utilisateur au format JPG sur un serveur... et que l'image ai comme nom une variable contenu dans un input.
A l'aide des différents tuto/forum, j'ai reussi a recuperer le dessin, a le sauvegarder avec un nom fix, mais au format PNG. J'arrive aussi a afficher dans la page HTML le contenu du canvas au format JPG...
Des que j'essai de passer le dataurl en JPG pour l'upload, ou que j'essaie de passer le nom en argument, plus rien ne marche...et je commence a tourner en rond... du coup j'appelle a l'aide XD
La page Web contient donc un canvas (mycanvas), un bouton pour valider l'upload, et un input qui contiendra le nom de l'image.
la fonction upload en javascript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| function Upload() {
// Generate the image data
var Pic = document.getElementById("myCanvas").toDataURL("image/png");
//var Pic=document.getElementById("myCanvas").toDataURL("image/jpeg");
Pic = Pic.replace(/^data:image\/(png|jpg);base64,/, "")
// Sending the image data to Server
$.ajax({
type: 'POST',
url: 'Save_Picture.aspx/UploadPic',
data: '{ "imageData" : "' + Pic + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert("dessin enregistre");
},
error: function (msg) {
alert("dessin non enregistre");
}
});
} |
et la page aspx qui enregistre l'image
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| using System;
using System.Web;
using System.IO;
using System.Web.Script.Services;
using System.Web.Services;
[ScriptService]
public partial class Save_Picture : System.Web.UI.Page
{
[WebMethod()]
public static void UploadPic (string imageData)
{string abc="image/mon_dessin.png";
string Pic_Path = HttpContext.Current.Server.MapPath(abc);
using (FileStream fs = new FileStream(Pic_Path, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);
bw.Write(data);
bw.Close();
}
}
}
} |
Du coup, comment passer le dataurl en JPG (j'ai l'impression que c'est le replace apres qui n'est pas bon... mais malgré mes recherches je n'ai pas trouvé), et comment passer la valeur de l'imput en 2eme argument pour la fonction Uploadpic (là je sèche totallement....)
Merci
Jabb'