Изображение PNG цвета CSS или HTML или JavaScript - PullRequest
2 голосов
/ 07 июня 2011

У меня есть изображение на моем веб-сайте, это png. Я хочу знать, есть ли в любом случае HTML5, javascript или css, чтобы изменить цвет изображения? По крайней мере, изображение меняется на белый (инвертируйте цвет с черного на белый, а не прозрачность).

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Вы не можете сделать это в простом HTML или CSS.Вы можете сделать это с помощью JS / HTML Canvas, но, вероятно, существует гораздо более простое и совместимое решение, чем JS / HTML Canvas для выполнения операций с изображениями.

В зависимости от того, что вы пытаетесь сделать, вы можете просто захотеть создать второе изображение, которое вы поменяете местами с первым.Есть также несколько достойных пакетов для работы с изображениями на серверных языках, таких как PHP, если вам нужно сделать что-то более динамичное.

Если вы используете js, приведенный ниже код будет изменен с вашего примера .

Используя ваш пример:

window.onload = function(){
    var imageObj = new Image();
    imageObj.onload = function(){
        drawImage(this);
    };
    imageObj.src = "darth-vader.jpg";
};

function drawImage(imageObj){
    var canvas = document.getElementById("myCanvas");
    var context = canvas.getContext("2d");

    var destX = 69; //update these to set the image position
    var destY = 50;

    context.drawImage(imageObj, destX, destY);

    var imageData = context.getImageData(0, 0, canvas.width, canvas.height);
    var data = imageData.data;

    for (var i = 0, n = data.length; i < n; i += 4) {
        if(data[i] == 0 && data[i+1] == 0 && data[i+2] ==0){ //if black, ie. red, green, and blue are all 0
            //switch to white
            data[i] = 255; //red
            data[i+1] = 255; //green
            data[i+2] = 255; //blue
        }
        // i+3 is alpha (the fourth element)
    }

    // overwrite original image
    context.putImageData(imageData, 0, 0);
}
1 голос
/ 07 июня 2011

Вы не объяснили, почему вы не просто используете Photoshop для этого, но я предполагаю, что у вас есть свои причины.

Хорошо хотел поддержать все ... но сейчас Firefox,Хром будет хорош.Последние версии, было бы неплохо ... Я думаю, что с canvas возможен HTML5.

Я не уверен, насколько хорошо он работает с прозрачными .png s, но вы можете попробовать Pixastic.

Демонстрация эффекта «Инвертировать»: http://www.pixastic.com/lib/docs/actions/invert/

Вам повезло с поддержкой браузера «Инвертировать» - она ​​работает даже в IE:

Хотя некоторые эффекты в Pixastic имитируются в IE с использованием фирменных фильтров, большинство действий и эффектов не будут работать без браузера с поддержкой Canvas.Пожалуйста, рассмотрите возможность использования Firefox, Opera или Safari

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...