Source of: conv_filter.php


<?php
extract($_GET, EXTR_SKIP|EXTR_PREFIX_ALL|EXTR_REFS, '');

function relief($im)
{
    $filter=imlib_create_filter();
    
    $c=IMLIB_CHANNEL_RED|IMLIB_CHANNEL_GREEN|IMLIB_CHANNEL_BLUE;
      imlib_filter_set_red   ($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_red   ($filter,  0,  0, 0,  1,  1,  1);
      imlib_filter_set_green ($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_green ($filter,  0,  0, 0,  1,  1,  1);
      imlib_filter_set_blue  ($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_blue  ($filter,  0,  0, 0,  1,  1,  1);
      imlib_filter_constants ($filter, 0, 768, 768, 768);
      imlib_filter_divisors  ($filter, 0,   6,   6,   6);

    imlib_image_filter($im,$filter);

    imlib_free_filter($filter);
}

function edge_detect($im)
{
    $filter=imlib_create_filter();

      imlib_filter_set_red  ($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_red  ($filter, -1,  0, 0, -3, -3, -3);
      imlib_filter_set_red  ($filter, -1,  1, 0, -1, -1, -1);
      imlib_filter_set_red  ($filter,  0, -1, 0, -3, -3, -3);
      imlib_filter_set_red  ($filter,  0,  0, 0, 16, 16, 16);
      imlib_filter_set_red  ($filter,  0,  1, 0, -3, -3, -3);
      imlib_filter_set_red  ($filter,  1, -1, 0, -1, -1, -1);
      imlib_filter_set_red  ($filter,  1,  0, 0, -3, -3, -3);
      imlib_filter_set_red  ($filter,  1,  1, 0, -1, -1, -1);

      imlib_filter_set_green($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_green($filter, -1,  0, 0, -3, -3, -3);
      imlib_filter_set_green($filter, -1,  1, 0, -1, -1, -1);
      imlib_filter_set_green($filter,  0, -1, 0, -3, -3, -3);
      imlib_filter_set_green($filter,  0,  0, 0, 16, 16, 16);
      imlib_filter_set_green($filter,  0,  1, 0, -3, -3, -3);
      imlib_filter_set_green($filter,  1, -1, 0, -1, -1, -1);
      imlib_filter_set_green($filter,  1,  0, 0, -3, -3, -3);
      imlib_filter_set_green($filter,  1,  1, 0, -1, -1, -1);

      imlib_filter_set_blue ($filter, -1, -1, 0, -1, -1, -1);
      imlib_filter_set_blue ($filter, -1,  0, 0, -3, -3, -3);
      imlib_filter_set_blue ($filter, -1,  1, 0, -1, -1, -1);
      imlib_filter_set_blue ($filter,  0, -1, 0, -3, -3, -3);
      imlib_filter_set_blue ($filter,  0,  0, 0, 16, 16, 16);
      imlib_filter_set_blue ($filter,  0,  1, 0, -3, -3, -3);
      imlib_filter_set_blue ($filter,  1, -1, 0, -1, -1, -1);
      imlib_filter_set_blue ($filter,  1,  0, 0, -3, -3, -3);
      imlib_filter_set_blue ($filter,  1,  1, 0, -1, -1, -1);

      imlib_filter_divisors ($filter, 0,   3,   3,   3);

    imlib_image_filter($im,$filter);

    imlib_free_filter($filter);
}

function emboss($im)
{
    $filter=imlib_create_filter();

      imlib_filter_set($filter, -1, -1,  0,  1,  1,  1);
      imlib_filter_set($filter,  0, -1,  0,  1,  1,  1);

      imlib_filter_set($filter, -1,  0,  0,  1,  1,  1);
      imlib_filter_set($filter,  0,  0,  0,  1,  1,  1);
      imlib_filter_set($filter,  1,  0,  0, -1, -1, -1);

      imlib_filter_set($filter,  0,  1,  0, -1, -1, -1);
      imlib_filter_set($filter,  1,  1,  0, -1, -1, -1);
    
    imlib_image_filter($im,$filter);

    imlib_free_filter($filter);
}

$im = imlib_load_image('test.jpg');

if ($_type==1) emboss($im);
if ($_type==2) relief($im);
if ($_type==3) edge_detect($im);

Header('Content-type: image/jpeg');

imlib_dump_image($im);
imlib_free_image($im);

?>