ФорумПрограммированиеPHP для идиотовРасширения PHP → Как обесцветить картинку средствами GD

Как обесцветить картинку средствами GD

  • unikom

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

    Spritz 15 ноября 2007 г. 21:42

    Необходимо создать скрипт обесцвечивающий картинки. Помню что была какая-то функция просто тупо меняющая все цвета на оттенки серого. Ещё если можно скиньте ссылку на хорошую документацию по GD
  • welder

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

    Spritz 15 ноября 2007 г. 22:19, спустя 37 минут 20 секунд

    на там в исходниках глянь


    http://welder.host-expert.com/hlam/thumb2.zip
  • unikom

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

    Spritz 21 ноября 2007 г. 0:11, спустя 5 дней 1 час 51 минуту


    на там в исходниках глянь


    http://welder.host-expert.com/hlam/thumb2.zip

    Там всё заточено под php5, функция imagefilter в 4й не работает, а вот на хостинге стоит именно 4ка
    в php5 серым рисунок можно сделать так
    imagefilter($im, IMG_FILTER_GRAYSCALE );

    вот альтернатива для 4ки
    if (imageistruecolor($im)) {
    imagetruecolortopalette($im, false, 256);
    }

    for ($c = 0; $c < imagecolorstotal($im); $c++) {
    $col = imagecolorsforindex($im, $c);
    $gray = round(0.299 * $col['red'] + 0.587 * $col['green'] + 0.114 * $col['blue']);
    imagecolorset($im, $c, $gray, $gray, $gray);
    }
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2007 г. 10:36, спустя 2 дня 10 часов 25 минут

    Предлагаю свой вариант решения. По данным O\'REILLY Pocket Reference все функции времен PHP 3.0.x :)

    $img=imagecreatefromjpeg($f); // необходимо выбрать функцию, соответствующую типу изображения!
    $w=imagesx($img);
    $h=imagesy($img);
    for ($i=0; $i<$h; $i++) {
    for ($j=0; $j<$w; $j++) {
    $col=imagecolorat($img, $j, $i);
    $rgb=imagecolorsforindex($img, $col);
    $b=$rgb["red"]+$rgb["green"]+$rgb["blue"];
    $b=round($b/765*255);
    $col=imagecolorallocate($img, $b, $b, $b);
    imagesetpixel($img, $j, $i, $col);
    }
    }
    imagejpeg($img);

    P.S. идея с обесцвечиванием была взята отсюда (хехе, найдите 5 отличий :D ) http://hudzilla.org/phpwiki/index.php?title=Development:_ASCII_art_generator (кстати, это сайт автора моей любимой книги - Php in a nutshell).

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