За последние 24 часа нас посетили 20847 программистов и 1626 роботов. Сейчас ищут 837 программистов ...

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

Тема в разделе "Обработка изображений средствами PHP", создана пользователем Juke, 22 фев 2011.

  1. Juke

    Juke Активный пользователь

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


    PHP:
    1.  
    2.  
    3. $img=imagecreatefrompng('dj.png');  
    4. $index = imagecolorat($img, 150, 100);    
    5.  imagecolorset($img, $index, 255, 0, 0);
    6.  header("Content-type: " .image_type_to_mime_type(IMAGETYPE_PNG)); imagepng($img);
    7.  
    8.  
    9.  
     
  2. Juke

    Juke Активный пользователь

    С нами с:
    22 фев 2011
    Сообщения:
    8
    Симпатии:
    0
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Вариант номер адын.
    сделай все вариации (цвет фона Х цвет рисунка) и на js тыкай нужный рисунок. Применимо если рисунок будет неизменяемым и таких вариаций не много (ну до сотни). Плюсы - обрабатывается шуро-быро, пхп - не просит. Минусы - нужно нарисовать кучу этих вариаций и держать в папке с рисунками.

    Вариант намбер два.
    нужно ипенить скрипт, в котором обрабатываешь входящие переменные, такие как цвет фона и цвет центрального рисунка, рисуешь на gd2 выталкиваешь через хедер, чтото типа как ты написал. Но код нужно держать в отдельном файле и сделать реврайт через mod_rewrite, чтобы путь к рисунку был типа таким: site.com/img-12-6.png, где 12 - это, например, цвет фона, а 6- цвет рисунка. В реврайте это переписывается на image.php?bg=12&img=6.
    В сам хтмл код, после обработки через js - тыкаешь такой рисунок - <img src="/img-12-6.png">. Поскольку в реврайте есть правило, то при запросе картинки будет дергаться страница image.php с указанными параметрами.
     
  4. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    Есть еще вариант - нарисовать ваши виниловые картинки в svg (или портировать в svg из корела), и js заказывать изменение цвета заливки. шуро-быро, php не просит, нагрузки на сервер - ноль, выбор цветов - хоть скроллбаром или по rgb-кубу (посмотрите в сторону готовых js решений).

    upd: прошу прощения, не заметил, что именно png.
    почитайте тогда вот это. вам должно подойти: http://stackoverflow.com/questions/1890 ... gd-library
    но я всё равно думаю, что js - более выгодное решение.
     
  5. Juke

    Juke Активный пользователь

    С нами с:
    22 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    titch, да рад бы я и на JS но на нём у меня деже понятия нет как сделать. если сожешь - направь хоть в нужное русло
     
  6. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    svg - это такая форма представления xml-изображения. В нужном месте можно обратиться к параметрам цвета и т.д. Есть хорошие примеры, как в динамике при помощи svg+js делают карты распространения погодных фронтов и всякую такую полезнячину.

    Принцип такой: загружаем svg пользователю, когда пользователь хочет что-то поменять (двигает скролл), по событию вызываем функцию, которая парсит xml, меняет код цвета в svg и просит браузер перерисовать его.
     
  7. Juke

    Juke Активный пользователь

    С нами с:
    22 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    уго... гдеж поглдеть можно на код хоть бы..
     
  8. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
  9. Juke

    Juke Активный пользователь

    С нами с:
    22 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    шот ваше тёмный лес...
     
  10. Juke

    Juke Активный пользователь

    С нами с:
    22 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    вот код он меняет цвет картинки на красный.. но тут картинка gif

    PHP:
    1. $im = imagecreatefromgif("dj.gif");
    2.    $index = imagecolorat($im, 150, 100);  
    3.    imagecolorset($im, $index, 255, 0, 0);
    4.  
    5.     imagepng($im);
    6.  
    вот скрин работы[​IMG]



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

    PHP:
    1. $im = imagecreatefrompng("dj.png");
    2.      $index = imagecolorat($im, 150, 100);  
    3.     imagesavealpha($im, true); //для сохранения альфаканала
    4.     imagecolorset($im, $index, 255, 0, 0);
    5.   imagepng($im);
    6.  
    как итог - не работает, не заменяет цвет на красный и показывает исходное изображение .( подправьте ребят, что не так.. не пойму

    вот скрин [​IMG]