我正在尝试在将图像上传到服务器之前调整文件上传中的图像大小。我发现了decent plugin返回更新图像的blob,但是我找不到如何将blob分配回上传使用的文件对象。
blob看起来像:data:image / jpeg; base64,/ 9j / 4AAQSkZJRgABAQAAAQAB .....
var file = e.target.files[0];
canvasResize(file, {
width: 300,
height: 0,
crop: false,
quality: 80,
//rotate: 90,
callback: function (data, width, height) {
// How to assign the data blob back to the file?
//$(file).attr('src', data);
// THEN submit with the smaller photo
$('#PhotoForm').ajaxSubmit(options);
}
});
谢谢!
答案 0 :(得分:0)
如果你仍然坚持使用canvasResize,那么还有很多其他的图像处理库。我以前使用Pixastic效果很好,虽然它比canvasResize有更大的开销。但它是better documented。
答案 1 :(得分:0)
我最后只是将blob添加到表单中的隐藏字段并提交它。将其保存为C#中的图像是通过以下方式完成的:
var regex = new Regex(@"data:(?<mime>[\w/]+);(?<encoding>\w+),(?<data>.*)", RegexOptions.Compiled);
var match = regex.Match(input.ImageBlob);
var mime = match.Groups["mime"].Value;
var encoding = match.Groups["encoding"].Value;
var data = match.Groups["data"].Value;
byte[] imagedata = Convert.FromBase64String(data);
Image img = byteArrayToImage(imagedata);
img.Save("someimagename.jpg");