Javascript 在HTML 5中上载之前调整图像大小
在将图像上载到服务器之前,我正在尝试调整文件上载中图像的大小。我找到了一个返回更新图像的blob的函数,但是我找不到如何将blob分配回上传所使用的文件对象 blob看起来像:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABJavascript 在HTML 5中上载之前调整图像大小,javascript,jquery,image-processing,html5-canvas,Javascript,Jquery,Image Processing,Html5 Canvas,在将图像上载到服务器之前,我正在尝试调整文件上载中图像的大小。我找到了一个返回更新图像的blob的函数,但是我找不到如何将blob分配回上传所使用的文件对象 blob看起来像:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB var file = e.target.files[0]; canvasResize(file, { width: 300, height: 0,
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);
}
});
谢谢 如果您仍然坚持使用canvasResize,那么还有许多其他图像处理库。我以前使用过Pixastic,虽然它比canvasResize有更大的开销,但效果非常好。不过是这样。我只是将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");
var regex=new regex(@“数据:(?[\w/]+);(?\w+,(?*),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;
字节[]imagedata=Convert.FromBase64String(数据);
图像img=byteArrayToImage(图像数据);
保存(“someimagename.jpg”);
您有一个数据:scheme URI。您可以将其发布到服务器,然后在那里将其解码回二进制。是的,您必须将blob作为文本发送回服务器,您将无法用blob覆盖文件上载控件的值。如果需要,此代码将从mime类型获取图像名的正确扩展名: