图像裁剪器不适用于外部图像

Posted

技术标签:

【中文标题】图像裁剪器不适用于外部图像【英文标题】:Image cropper not working with external images 【发布时间】:2015-01-28 09:36:38 【问题描述】:

我正在使用this 图像裁剪器,只要我加载的图像实际上位于站点地图结构本身中,它就可以正常工作。

但是,我正在尝试通过如下链接裁剪位于外部位置的图像:ftp://etc/etc/etc.png

我能够完美地将图像加载到画布中,但是当我尝试执行 javascript 以实际裁剪图像时,什么都没有发生。

但是,当我使用 images/img.png 等来源时,这确实有效

有人知道如何解决这个问题吗?

【问题讨论】:

你能显示你的代码吗 我的 html pastebin.com/UvkiN43r 我的 javascript 调用函数 pastebin.com/zkGpM41d 【参考方案1】:

使用已知 x y 坐标的画布裁剪图像,从您要裁剪图像的位置: 在这里,您可以使用您定义的路径,例如 imgsrc="images/img.png" 或图像的任何base64数据作为base64。

function generateImageThumbnailArrayFromCLientInfo(imgsrc,x,y ClientInfoArray) 
        var image = new Image();
        image.src = imgsrc;
        var imagePieces = [];


                var canvas = document.createElement('canvas');
                canvas.width = image.width;
                canvas.height = image.height;
                var context = canvas.getContext('2d');

                context.drawImage(image, x, y, image.width, image.height, 0, 0, canvas.width, canvas.height);


                imagePieces=canvas.toDataURL();

        return imagePieces;
    

【讨论】:

【参考方案2】:

如果您查看浏览器控制台,您可能会发现您收到类似于以下内容的跨域资源共享策略错误:

来自“https://example.com”的图片已被阻止加载 按跨域资源共享策略:否 请求中存在“Access-Control-Allow-Origin”标头 资源。 Origin 'http://localhost' 因此不允许访问。

此图像裁剪器的文档指出:

如果您尝试在跨域图像上启动裁剪器,请确保您的浏览器支持 HTML5 CORS 设置属性,并且 您的图像服务器支持 Access-Control-Allow-Origin 选项。

假设您拥有提供图像的网络服务器,您可能需要查看enabling CORS。

【讨论】:

以上是关于图像裁剪器不适用于外部图像的主要内容,如果未能解决你的问题,请参考以下文章

R中的裁剪图像

使用 Python 的 OpenCV 函数裁剪图像 [重复]

可以裁剪外部图像的jQuery插件

Android 图像选择器和裁剪器

裁剪器在使用 dropzone js 上传之前裁剪多个图像

如何从图像选择器中裁剪图像?