base 64符号化されたテキストを画像に変換してアップロード保存を実現します.
3201 ワード
base 64コードのテキストを 画像
base 64コードのテキストを 画像
完全なコードを実現:
なお、バックグラウンドコードには
base 64コードのテキストを 画像
private Image Base64StringToImage(string txt)
{
byte[] arr = Convert.FromBase64String(txt);
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);
return bmp;
}
呼び出し:Image returnImage = Base64StringToImage(str);
str:string str = byteStr.Substring(delLength, byteStr.Length - delLength);
byteStr:string byteStr = Request["getDataURL"].ToString();//data:image/jpg;base64,
delLength:int delLength = byteStr.IndexOf(',') + 1;
画像に変換するbase 64 data:image/jpg;base 64、このヘッダファイル完全なコードを実現:
public string ProcessRequest()
{
try
{
string byteStr = Request["getDataURL"].ToString();//data:image/jpg;base64,
int delLength = byteStr.IndexOf(',') + 1;
string str = byteStr.Substring(delLength, byteStr.Length - delLength);
Image returnImage = Base64StringToImage(str);
returnImage.Save(Server.MapPath("/upload/UploadAction/") + Guid.NewGuid() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception)
{
return " ";
}
return " ";
}
//base64
private Image Base64StringToImage(string txt)
{
byte[] arr = Convert.FromBase64String(txt);
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);
return bmp;
}
ここでbase 64符号化は、フロントjsがcanvas.todataurlで来ることができる.dataURL = canvas.toDataURL(type);
その後ajax非同期でその処理を除去するために提出する:$.ajax({
url: "imageRequest.aspx",//?getDataURL=" + $("#fuPiccropper").cropper("getDataURL", "image/jpeg"),
type: "post",
dataType: "text",
data: {
"getDataURL": $("#fuPiccropper").cropper("getDataURL", "image/jpeg")
},// base64
success: function (data) {
alert("sucess");
}, error: function () {
alert("failure");
}
});
上の方cropper
は、画像のスクリーンショットを実現するプラグインであり、canvasからdataurlに変換する方法があり、ここでは詳細に説明する必要はない.なお、バックグラウンドコードには
returnImage.Save(Server.MapPath("/upload/UploadAction/") + Guid.NewGuid() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
は、復号後のbitmapをピクチャとして保存し、パラメータは保存経路とファイル名です.非同期処理では、一般的な処理プログラムではなく、例えば私のようにaspxウェブページを使っています.処理方法をロードする時に必ず実行します.あるいは直接にパスに記入してください.ロード中ですprotected void Page_Load(object sender, EventArgs e)
{
ProcessRequest();
}
非同期処理プログラムには参照が必要です.using System;
using System.Drawing;
using System.IO;