更改光标图像时未找到数据uri

时间:2017-03-02 20:18:48

标签: javascript html5-canvas data-uri

         function rotateImageOnCanvas(path) {
             fighterJets = [];
                var img = new Image();
            img.src = path;
            img.onload = function() {
             this.width = 30;
             this.height = 30;
             var can = document.createElement('canvas');
            var ctx = can.getContext('2d');
            ctx.drawImage(this, 0, 0, this.width, this.height);
            for(d=0;d<360;d++) {ctx.rotate(1);fighterJets.push(can.toDataURL());}
        };
       }

我正在尝试从服务器加载图像。加载后,然后在画布上旋转图像并将数据uri存储在一个数组中,以便以后使用,而无需再次调用服务器。但是当我尝试用数据uri更改光标图像时,我得到&#34;无效的属性值&#34;在Firefox中;

 parameter.style.cursor = 'url('+fighterJets[90]+') 15 15, auto'

我已经检查过,数据uri是参数的样式属性(它非常大,我不能错过它)。所以我迷失了下一步该怎么做。我有一个可怜的canavas低调,我怀疑我做错了什么,如果没有任何解决方法,你可以将数据uri分配给光标图像。欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

经过大量的反复试验后,我意识到自己无效了#34;无效的财产价值&#34;因为我没有将canavas大小与图像匹配,因此产生的图像变得很大,因此没有显示在光标上。下面是工作代码。

    function rotateFighterJetOnCanvas(path,degrees) {
        var img = new Image();
        img.src = path;
        img.onload = function() {
            var can = document.createElement('canvas');
            var ctx = can.getContext('2d');
            can.width =30;can.height =30;
            ctx.translate(15, 15);
            ctx.rotate(Math.radians(degrees));
            ctx.imageSmoothingEnabled = false;
            ctx.drawImage(this, -15, -15, 30, 30);
            ctx.rotate(-Math.radians(degrees));
            ctx.translate(-15, -15);
            fighterJets.push(can.toDataURL("image/png",1.0));
        };
    }
    Math.radians = function(degrees) {
        return degrees * Math.PI / 180;
    };