使用照片编辑器SDK从URL编辑照片

时间:2018-07-30 17:30:57

标签: javascript photoeditorsdk

我在应用程序中使用PhotoEditorSDK, 但出现附件错误。 附件中的代码也遵循我用来得出这些结果的代码。

这似乎是跨域问题

,但是SDK有其特定部分。 我在公司的支持下开了电话,但到目前为止没有任何进展。 如果有人已经遇到此问题,请知道原因或解决方法。 请帮助我;-;

"use stricts";
/*link = http://localhost:8080/editar?&page=1&url=https://photos.google.com/lr/photo/AGj1epXDcMoRlOQ7QcWY9dZ2ALBIqhfJuTSz-ywrilsUhstrZ7wo26XkgDSBk4Jx2nJuIPm3LCFoKuo
*/
var editor;
var vars = getUrlVars();
var page = vars.page;
var url = vars.url;
window.onload = function () {
    var container = document.getElementById('editor');
    var img = new Image();
    img.src = url;
    editor = new PhotoEditorSDK.UI.ReactUI({
        container: container,
        enableUpload: false,
        crossOrigin: 'anonymous',
        editor: {
            image: img,
            responsive: true,
            enableZoom: false,
            controlsOrder: ['transform', 'filter', 'adjustments', 'focus'],
            export: {
                download: false,
                format: 'image/jpeg',
                type: PhotoEditorSDK.RenderType.BLOB
            },
        },
        //your license below
        license: 'license',
        assets: {
            baseUrl: '/assets'
        },
    });
}

function getUrlVars() {
    console.log(window.location.href);
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf("#") + 1).split("&");
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split("=");
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
<html>
<head>
<script src="/js/jquery-1.11.3.min.js"></script>
<!-- React Dependencies for the SDK UI -->
<script src="js/vendor/react.production.min.js"></script>
<script src="js/vendor/react-dom.production.min.js"></script>
<!-- PhotoEditor SDK-->
<script src="js/PhotoEditorSDK.min.js"></script>
<!-- PhotoEditor SDK UI -->
<script src="js/PhotoEditorSDK.UI.ReactUI.min.js"></script>

<link rel="stylesheet" href="css/PhotoEditorSDK.UI.ReactUI.min.css" />
</head>
<body>
<div id="editor" style="width: 100%; height: 100%; padding-top: 65px;"></div>

<script src="js/editar.js"></script>
</body>
</html>

enter image description here

2 个答案:

答案 0 :(得分:0)

在将图像推送到PhotoEditorSDK之前,您需要等待图像加载。

您应该将editor =代码块移至img.onload=""方法中。

此致

答案 1 :(得分:0)

在控制台中,有一条错误消息,指出由于同源策略而无法加载资源。

您要做的是为加载的资源启用CORS(跨域资源共享)。您可以查看更多信息here

但是,您可能无法控制已加载的资源(例如,允许用户通过指定外部URL添加图像)。

在这种情况下,您应该考虑实现一个PHP“代理”,该代理将在服务器上下载映像(注意,同源策略适用于浏览器),然后将该映像提供给前端。您有两种选择:

  • 将图像存储在服务器的文件系统中,然后继续URL。
  • 直接将图像内容提供给客户端,例如您可以将图片编码为base64,然后通过XHR请求进行检索。