0

我需要在 html5 画布中绘制的图像看起来像 gif 图像(使其只有 256 种颜色)。是否有任何功能使画布只有 256 种或更少的颜色,并使其转换放入其中的图像只有 256 种或更少的颜色?

提前致谢

4

1 回答 1

1

我不确定画布的 2D 上下文中是否存在这样的方法。

但是,它似乎并不是很复杂。256 种颜色 = 8 级红、绿、蓝。因此,您可以转换图像以遵守此规则。

为此,您需要更改每个像素的颜色。我要做的是创建一个临时画布来操纵图像,像这样(未经测试):

//create copy of the image in a temporary context
        this.tmpCanvas = document.createElement('canvas');
        this.tmpCanvas.width = myIMage.width;
        this.tmpCanvas.height = myIMage.height;
        var scaledContext = this.tmpCanvas.getContext('2d');
        scaledContext.drawImage(myIMage, 0, 0, myIMage.width, myIMage.height, 0, 0, myIMage.width, myIMage.height);

        //get image data
        imageData = scaledContext.getImageData(0, 0, myIMage.width, myIMage.height);

        //loop over copied image date and modifiy pixels value
        for(var i = 0; i < imageData.length; i += 4) { // 4 because RGBA
            //red component
            imageData[i] = Math.round(imageData[i] / 64);
            //green component
            imageData[i + 1] = Math.round(imageData[i+1] / 64);
            //blue component
            imageData[i + 2] = Math.round(imageData[i+2] / 64);
        }

        scaledContext.putImageData(imageData, 0, 0);

我没有测试这段代码,但想法就在那里

于 2013-02-10T11:26:01.587 回答