合并来自Raphael svg的图片

vib*_*kov 13 jquery svg raphael canvg

尝试创建
第1步 - 让用户通过Ajax,Raphael和Raphael freetransform上传图像.

步骤2 - 单击按钮以显示合并上载图像中的一个图像.(问题): 我找到了关于转换Raphael svg 1 2 3的类似帖子 ,
所以我也使用Canvg但得到console.log :Resource interpreted as image but transferred with MIME type text/html error: image "" not found.

请帮我找到解决方法.或任何线索如何达到相同的目标(将上传的几个Raphael svg图像转换为一个png/jpeg)?

谢谢!

步骤1

// upload images and ajax show in page
var paper = Raphael($('.upload_img')[0], 400, 200);
$('.upload_btn').click(function(){
    ...
    $.ajax({
        type: "POST",
        url: "index.php",
        data: fd,
        processData: false,
        contentType: false,
        success: function(html){
            var session = ..., file = ... type = ...; 
            function register(el) {
                // toggle handle
            };
            var img = new Image();
            img.onload = function(){
                var r_img = paper.image('img/product/tmp/'+session+'/'+file+type, 0, 0, 200, 200);
                register(r_img);
            };
            img.src = 'img/product/tmp/'+session+'/'+file+type;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

第2步

// merge and show
$('.merge_btn').click(function(){
    var upload_svg = $('.upload_img').html();
    canvg('canvas', upload_svg);
    console.log('upload_svg'+upload_svg); //<svg height="200" version="1.1" width="400" xmlns="http://www.w3.org/2000/svg" style="overflow-x: hidden; overflow-y: hidden; position: relative; "><desc></desc><defs></defs><image x="0" y="0" width="200" height="216.91973969631235" preserveAspectRatio="none" href="img/product/tmp/bc4d26ceb620852db36074d351883539/6.jpeg"></image></svg>
    // and get error
});


// These code If toggle show Raphael freetransform svg handle, it is work convert several svg handle to one image. but still not found upload image to merge
Run Code Online (Sandbox Code Playgroud)

Yot*_*mer 1

如果我没有弄错的canvg话,函数期望第二个参数是String包含图像文件路径的 a 。然而,在第 2 步中,您的代码执行以下操作:

    var upload_svg = $('.upload_img').html(); // **** this does not return the image path
    canvg('canvas', upload_svg);
Run Code Online (Sandbox Code Playgroud)

我建议你尝试这样的事情:

    var upload_svg = $('.upload_img').attr('src');
    canvg('canvas', upload_svg);
Run Code Online (Sandbox Code Playgroud)

这将解释这个错误 -Resource interpreted as image but transferred with MIME type text/html它需要一个图像但收到空白HTML。代码的其余部分看起来不错。