ФорумПрограммированиеPHP для идиотов → Смена цвета изображения

Смена цвета изображения

  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 21 февраля 2011 г. 22:56

    Добрый день, уважаемые спецы! :)
    У меня стоит задача сделать скрипт, который бы менял цвет png изображения. Ну чтобы было более нагляднее , приведу пример того что нужно http://trickysticky.ru/vynil-stickers/interer/kult_lichnosti/house_md/ вот, пробывал уже кое как на php но возникла проблема, что он как -то странно изменяет цвет да и используется header и как известно перед ним никаого выводна не должно быть… в обще даже не знаю как решать задачу ( может что-то посоветуете или кто-то уже делал подобное? Буду признателен!


    $img=imagecreatefrompng('dj.png');
    $index = imagecolorat($img, 150, 100);
    imagecolorset($img, $index, 255, 0, 0);

    header("Content-type: " .image_type_to_mime_type(IMAGETYPE_PNG));
    imagepng($img);
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 22 февраля 2011 г. 2:30, спустя 3 часа 33 минуты 25 секунд

    Juke, так там же ж на JS делается, первый див - фон, второй - силуэт Хауса.
    по клику на выбор цвета у фонового дива меняется ргб на бекграунде, а у второго меняется сорс урл картинки. в урле картинки просто передается собственный цвет и цвет фона.

    тут ничего сложного
  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 2:46, спустя 15 минут 58 секунд

    Ну цвет передаётся и цвет какимно загодчным способом изменяется.. вот как бы разгадать как меняется именно дядя хаус.. бекгроунт то понято, что не сложно заменить, а как вот сам цвет мужика заменяется, для меня загадка))
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 22 февраля 2011 г. 2:51, спустя 5 минут 7 секунд

    есть базовая картинка, к примеру черый хаус на прозрачном фоне.
    в реквесте нам пришел красный цвет.
    проходимся циклом по всем пикселям базовой картинки и заменяем черные пиксели на красные.

    все.
  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 2:57, спустя 6 минут 22 секунды

    вот я тож так думаю.. ии вот интересен как раз этот момент , как прочитать пиксели и заменить их.. так то логика в приципе ясна.. а вот каким образом воплащать - даже хрен его знаеть.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 22 февраля 2011 г. 3:00, спустя 3 минуты 19 секунд

    делаешь цикл от нуля до (ширина картинки) и в нем вложеный (от нуля до (высота картинки)). в цикле проверяешь, если текущий пиксель черного цвета, то заменить на тот цвет, который пришел в реквесте
  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 3:06, спустя 5 минут 37 секунд

    Эт я понимаю, я имеюю ввиду какие фунции например использовать чтобы както открыть изображение на чтение и замену… да и как потом вывести на экран новое заменённое изображение
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 22 февраля 2011 г. 3:39, спустя 32 минуты 46 секунд

    может лучше заливкой изменить цвет?
  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 3:57, спустя 18 минут 29 секунд

    вот код он меняет цвет картинки на красный.. но тут картинка gif

    $im = imagecreatefromgif("dj.gif");
    $index = imagecolorat($im, 150, 100);
    imagecolorset($im, $index, 255, 0, 0);

    imagepng($im);


    Вот скрин -



    … но мне нужно чтобы менялся в png картинки и я переделал на вот так:


    $im = imagecreatefrompng("dj.png");
    $index = imagecolorat($im, 150, 100);
    imagesavealpha($im, true); //для сохранения альфаканала
    imagecolorset($im, $index, 255, 0, 0);
    imagepng($im);




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

    Вот скрин -
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 22 февраля 2011 г. 5:04, спустя 1 час 6 минут 42 секунды


    может лучше заливкой изменить цвет?
    может.
    я просто привел пример, он не претендует на идеальное решение.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 7:10, спустя 2 часа 6 минут 4 секунды

    я обычно в таких случаях делаю две картинки - одну оригинал не меняю, вторую (полупрозранчую PNG цветную) тупо накладываю через GD
  • Juke

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz 22 февраля 2011 г. 10:24, спустя 3 часа 14 минут 9 секунд

    Ну дк мне надо чтобы можно было много цветов переключать… а то это я тогда сколько же картинок буду делать))
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 22 февраля 2011 г. 12:13, спустя 1 час 48 минут 49 секунд

    [man]imagefill[/man]()

    Единственная проблема, которую вижу, это тень ещё с синим оттенком. ХЗ как её тонировать. Проще её убрать или сделать серой.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!