Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在HTML 5中上载之前调整图像大小_Javascript_Jquery_Image Processing_Html5 Canvas - Fatal编程技术网

Javascript 在HTML 5中上载之前调整图像大小

Javascript 在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,

在将图像上载到服务器之前,我正在尝试调整文件上载中图像的大小。我找到了一个返回更新图像的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);
            }
        });

谢谢

如果您仍然坚持使用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类型获取图像名的正确扩展名: