相关疑难解决方法(0)

使用ngImgCrop进行angular-file-upload

我正在使用(ngImgCrop)裁剪图像,然后使用(angular-file-upload)将裁剪后的图像上传到服务器.

我可以从ngImgCrop中的"on-change"选项中获取$ dataURI.但我需要一个File instace来调用$ upload.如何获取裁剪图像的File实例以便上传:

        $scope.upload = $upload.upload({
            url: '/api/fileupload',
            file: [**file cropped here**]
        }).progress(function (evt) {
            //
        }).success(function (data, status, headers, config) {
            //
        });
Run Code Online (Sandbox Code Playgroud)

file-upload crop angularjs angular-file-upload

6
推荐指数
2
解决办法
8392
查看次数

带有 src blob 的画布到 img

我正在从画布创建一个 PNG 文件,但在我想将画布显示为 img 元素之前,使用 blob 作为 img 的 src。到目前为止我尝试过的:

canvas = document.getElementById("canvas");
//Get data from canvas
img_b64 = canvas.toDataURL('image/png');
//Create PNG
png = img_b64.split(',')[1];
//Create new img
img = document.createElement("img");
img.src = img_b64;
//Append img to document
//Save png
Run Code Online (Sandbox Code Playgroud)

这是可行的,但img_b64我想要一个 blob 作为 img 的 src,如下所示:

//Create blob from new PNG
blob = new Blob([window.atob(png)], { type: 'image/png', encoding: 'utf-8' });
//Create new img with blob as src
img = document.createElement("img");
img.src = URL.createObjectURL(blob);
//Append img to document …
Run Code Online (Sandbox Code Playgroud)

javascript png blob canvas

6
推荐指数
1
解决办法
7793
查看次数

Javascript Canvas:base64在调整大小和重新采样后返回文件?

可能重复:
将数据URI转换为File然后附加到FormData

是否可以将渲染的画布保存回Google Chrome中的文件?

我试过这个:

canvas.getAsFile('foo.jpg','image/jpeg')
Run Code Online (Sandbox Code Playgroud)

不行.

这仅适用于Firefox:

canvas.mozGetAsFile('foo.jpg')
Run Code Online (Sandbox Code Playgroud)

当然,我可以并且可能只是将原始base64编码的字符串发送到服务器并在那里解码.

但如果可以在客户端进行,我宁愿在那里做.

javascript html5 canvas

5
推荐指数
1
解决办法
1万
查看次数

使用chrome/ff中的createObjectURL对象URL的数据URI

我有一个图像的base64字符串.如何将其转换为对象URL?目的是通过向DOM注入Blob URL而不是非常大的base64字符串来尝试查看我的svg编辑器是否会更快.这仅用于编辑SVG.在保存时,对象URL将再次重新转换为base64.

图像大小通常为0.5 MB或更大.

我尝试过的:

var img = ...; //svg <image>
var bb = new BlobBuilder();
var dataStr = img.getAttributeNS(XLINKNS, 'href'); //data:image/jpeg;base64,xxxxxx
//dataStr = dataStr.replace(/data:.+;base64,/i, ''); //Strip data: prefix - tried both with & without
//dataStr = window.atob(dataStr); //tried both with & without

bb.append(dataStr);
var blob = bb.getBlob
img.setAttributeNS(XLINKNS, 'xlink:href', window.URL.createObjectURL(blob)); //blob:xxx
Run Code Online (Sandbox Code Playgroud)

我得到的是一个看似腐败的jpeg图像.

TIA.

html javascript

5
推荐指数
2
解决办法
2万
查看次数

如何使用Jquery Ajax通过FormData/multipart上传画布图像?

我想上传画布图片formdata/multipart.我有一个使用toDataURL()生成图像数据的画布.我想像formdata/multipartAjax帖子一样上传图像数据.

这是代码....

var dataUrl =  canvas.toDataURL('image/png');
var multipart = new FormData(); 

multipart.append('user_id', userID);
multipart.append('password', pwd);
multipart.append('inputdata',image data here);

 $.ajax({
            type : 'POST',
            // dataType: 'json',
            url : serviceURL,
            data : multipart,
            cache : false,
            processData : false,
            contentType : false,
            success : function(data) {


            },
            error : function(xhr, status, error) {

            }

        });
Run Code Online (Sandbox Code Playgroud)

我知道无法将图像数据uri附加到FormData中.那我该如何追加呢?

谢谢

javascript jquery multipartform-data kineticjs

5
推荐指数
1
解决办法
4975
查看次数

使用javascript在IE11中通过超链接<a>下载img

以下代码适用于Google Chrome,但不适用于IE11.

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
</head>
<body>
    <img id="img1" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAASUlEQVRo3u3PAQ0AIAwDsIGC+TcL
LkhOWgddSU6Ga5udT4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi8cQEjUgGT
mE6z3QAAAABJRU5ErkJggg==" />
    <script>
        var a = document.createElement('a');
        var image = document.getElementById('img1');
        a.setAttribute('href', image.src);
        a.setAttribute("download", 'fileName');
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我在IE11中运行此代码时,我收到消息:"您是否要允许此网站在您的计算机上打开应用程序?"

单击"允许"后,我"没有安装任何应用程序来打开此类链接(数据)"

如何使它在IE11中工作?

javascript hyperlink internet-explorer-11

5
推荐指数
1
解决办法
7025
查看次数

保存高分辨率HTML5画布图像

我正在HTML5中制作透视校正图像滤镜.该算法准备就绪,工作正常.

但是我在导出图像时遇到了问题.

我使用带有Three.js的WebGL上下文进行透视校正,因此我可以在GPU上快速完成任务(它实际上非常快速,在不到半秒的时间内完成3680x2760图像渲染).

所以我有两件事:用户用来配置和预览的低分辨率视口(720x480),以及高分辨率的背景视口(图像的大小,只是临时创建以渲染图像并且它们被破坏,所有这些都在里面完成一个RenderHighRes函数).

但是我的谷歌浏览器在打开图像时崩溃,可能是因为尺寸和源格式.为了导出图像我正在使用此代码:

console.log("Rendering");
vcomposer.render(); 
console.log("Rendered! Exporting");
var URL = vcomposer.renderer.domElement.toDataURL("image/jpeg");
console.log("Exported! Opening");
window.open(URL);
Run Code Online (Sandbox Code Playgroud)

无论图像大小如何,我都可以"导出!打开".但是对于更大的图像(如3680x2760),浏览器在打开URL时会崩溃.我认为它是因为它获得了像这样的图像的大网址.

所以问题是,我不需要打开图像,只需让用户下载即可.如果不将dataURL发送给用户下载,我怎么能这样做呢?

PS:如果我删除window.open行,它不会崩溃任何东西,所以渲染工作正常.同样具有所提及图像的半分辨率,它工作正常,因此它只是一个尺寸问题.

我希望我明白了^^

谢谢!

卢卡斯

javascript html5 canvas webgl

5
推荐指数
1
解决办法
1882
查看次数

将画布图像上载为多部分/表单数据类型的Blob

我正在尝试使用facebook api从我保存在页面上的画布上传图像:

var file = dataURItoBlob(canvas.toDataURL('image/jpeg', 1.0))

FB.api('/me/photos', 'POST', {
  source: file,
  message: 'photo description'
}, function (response) {
    console.log(response)
  }
)
Run Code Online (Sandbox Code Playgroud)

这是blob转换器:

function dataURItoBlob(dataURI) {
  var byteString = atob(dataURI.split(',')[1]);
  var ab = new ArrayBuffer(byteString.length);
  var ia = new Uint8Array(ab);
  for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ab], { type: 'image/jpeg' });
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:message: "(#324) Requires upload file"所以看起来上传者不会将blob识别为有效文件.


更新1:

我想这篇文章:将数据URI转换为文件,然后附加到FormData关于将blob转换为formData,尝试如下:

var dataURL = canvas.toDataURL('image/jpeg', 1.0)
var blob …
Run Code Online (Sandbox Code Playgroud)

javascript post facebook image facebook-javascript-sdk

5
推荐指数
1
解决办法
4376
查看次数

使用 dataURL 和 Flask 将画布图像保存到服务器

我们正在尝试通过在网站上生成新图片来更改用户的个人资料图片。我们尝试通过从 HTML 代码创建画布来实现此目的,然后使用toDataURL函数通过发布包含此数据的表单(输入类型=\'file\')将图片数据发送到服务器。

\n\n

当我们从计算机中选择文件时它可以工作,但当尝试将图像数据(从画布)附加到表单时我们无法使其工作。

\n\n

我已经找到了多种不完整的替代方案来解决如何做到这一点,但没有什么可以真正使其发挥作用。我们可能无法像我们那样设置输入值=imageData,但我们尝试了很多其他方法也不起作用,所以我们就这样保留它。

\n\n

提供的代码可能会有帮助,但也可能有一个通用的解决方案。

\n\n

最后,我们还是初学者,已经在网上搜索了整整两天的解决方案。我们找到了一些替代解决方案,但也无法使其完全发挥作用。非常感谢!

\n\n

我们发现一些几乎有用的链接:

\n\n

将 HTML5 Canvas 转换为要上传的文件?

\n\n

如何在服务器上将 HTML5 Canvas 保存为图像

\n\n

将数据 URI 转换为文件,然后附加到 FormData

\n\n

这是Python文件(my_app.py)

\n\n
from flask import Flask, url_for, render_template, request, redirect\napp=Flask(__name__)\nfrom flask_uploads import UploadSet, configure_uploads, IMAGES\nphotos = UploadSet(\'photos\', IMAGES)\napp.config[\'UPLOADED_PHOTOS_DEST\'] = \'static/uploads\'\nconfigure_uploads(app, photos)\n\n@app.route(\'/abc_test/\', methods=["GET", "POST"])\ndef abc_test():\n    if request.method==\'POST\':\n        print("It is a POST request")\n        try:\n            print(request.form[\'PHOTO\'])\n        except Exception as e:\n            print((\'exception 1:\', e))\n        try:\n            print(request.files[\'PHOTO\'])\n        except Exception as e:\n            print((\'exception 2:\', e))\n …
Run Code Online (Sandbox Code Playgroud)

python canvas flask

5
推荐指数
0
解决办法
2399
查看次数

fetch 发送 [object Object] 而不是 File 对象

我正在使用Expo及其ImagePicker从图库中抓取图像。它同时返回uribase64

现在我想在multipart/form-data请求中上传图像。

问题是服务器只File在下面的代码发送时才接受[object Object]

请求的图像

const formData = new FormData();

const data = {
  jwt,
};

formData.append('message', JSON.stringify(data));

formData.append('avatar', {
  uri: avatar,
  type: 'image/png',
  name: 'avatar.png'
});

fetch(url, {
  method: 'POST',
  body: formData,
  headers: {
    Accept: 'application/json',
  },
})
Run Code Online (Sandbox Code Playgroud)

由于我使用的是 Expo,因此我仅限于它支持的库。此外,添加Content-Type标头根本不起作用,服务器甚至无法识别该消息。

react-native

5
推荐指数
1
解决办法
500
查看次数