PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

imagefontheight> <imagefilltoborder
Last updated: Sat, 24 Mar 2007

view this page in

imagefilter

(PHP 5)

imagefilter — Applies a filter to an image

Popis

bool imagefilter ( resource $image, int $filtertype [, int $arg1 [, int $arg2 [, int $arg3]]] )

imagefilter() applies the given filter filtertype on the image.

Seznam parametrů

image

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().

filtertype

filtertype can be one of the following:

  • IMG_FILTER_NEGATE: Reverses all colors of the image.
  • IMG_FILTER_GRAYSCALE: Converts the image into grayscale.
  • IMG_FILTER_BRIGHTNESS: Changes the brightness of the image. Use arg1 to set the level of brightness.
  • IMG_FILTER_CONTRAST: Changes the contrast of the image. Use arg1 to set the level of contrast.
  • IMG_FILTER_COLORIZE: Like IMG_FILTER_GRAYSCALE, except you can specify the color. Use arg1, arg2 and arg3 in the form of red, blue, green. The range for each color is 0 to 255.
  • IMG_FILTER_EDGEDETECT: Uses edge detection to highlight the edges in the image.
  • IMG_FILTER_EMBOSS: Embosses the image.
  • IMG_FILTER_GAUSSIAN_BLUR: Blurs the image using the Gaussian method.
  • IMG_FILTER_SELECTIVE_BLUR: Blurs the image.
  • IMG_FILTER_MEAN_REMOVAL: Uses mean removal to achieve a "sketchy" effect.
  • IMG_FILTER_SMOOTH: Makes the image smoother. Use arg1 to set the level of smoothness.

arg1

arg2

arg3

Návratové hodnoty

Vrací TRUE při úspěchu, FALSE při selhání.

Příklady

Příklad 800. imagefilter() grayscale example

<?php
$im
= imagecreatefrompng('dave.png');
if (
$im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
    echo
'Image converted to grayscale.';
   
imagepng($im, 'dave.png');
} else {
    echo
'Conversion to grayscale failed.';
}

imagedestroy($im);
?>

Příklad 801. imagefilter() brightness example

<?php
$im
= imagecreatefrompng('sean.png');
if (
$im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20)) {
    echo
'Image brightness changed.';
   
imagepng($im, 'sean.png');
} else {
    echo
'Image brightness change failed.';
}

imagedestroy($im);
?>

Příklad 802. imagefilter() colorize example

<?php
$im
= imagecreatefrompng('philip.png');

/* R, G, B, so 0, 255, 0 is green */
if ($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0)) {
    echo
'Image successfully shaded green.';
   
imagepng($im, 'philip.png');
} else {
    echo
'Green shading failed.';
}

imagedestroy($im);
?>

Poznámky

Poznámka: Tato funce je k dispozici jen tehdy, bylo-li PHP zkompilováno s přibalenou verzí knihovny GD.

Viz také

imageconvolution()



imagefontheight> <imagefilltoborder
Last updated: Sat, 24 Mar 2007
 
add a note add a note User Contributed Notes
imagefilter
admin at phpgfx dot com
26-Aug-2007 09:52
this is a sepia function using microsoft's definition

<?php

function imagesepia( $img ) {
   
$total = imagecolorstotal( $img );
    for (
$i = 0; $i < $total; $i++ ) {
       
$index = imagecolorsforindex( $img, $i );
       
$red = ( $index["red"] * 0.393 + $index["green"] * 0.769 + $index["blue"] * 0.189 ) / 1.351;
       
$green = ( $index["red"] * 0.349 + $index["green"] * 0.686 + $index["blue"] * 0.168 ) / 1.203;
       
$blue = ( $index["red"] * 0.272 + $index["green"] * 0.534 + $index["blue"] * 0.131 ) / 2.140;
       
imagecolorset( $img, $i, $red, $green, $blue );
    }
}

?>
webmaster at designsbykosi dot info
08-May-2007 12:56
This will only work if you have php5. For php4, you'll have to use the sepia function set webmaster at qudi dot de suggested.
fananf at nerdshack dot com
16-Mar-2007 10:26
If you're looking for fast sepia effect that can be used for on-the-fly thumbnails generation you can't use sophisticated functions. The faster and much better way than described by webmaster at qudi dot de in the note from 31-Jan-2006 is applying colorize filter AFTER grayscale.

<?php

(...)

imagefilter($yourimage, IMG_FILTER_GRAYSCALE); imagefilter($yourimage, IMG_FILTER_COLORIZE, 90, 60, 40);

(...)

?>

I used (90,60,40) for my sepia after couple of tests, however, if you need darker or lighter just check what suits you best.
trucex email over at gmail
14-Feb-2007 12:31
It appears that imagefilter doesn't play nice with apha. If you run an imagefilter on a transparent image it'll return a black image...similar to a lot of Photoshop plugins do.
PanuWorld
14-Jan-2007 06:55
The documentation misses the exact meaning and valid ranges of the arguments for ImageFilter(). According to the 5.2.0 sources the arguments are:
IMG_FILTER_BRIGHTNESS
-255 = min brightness, 0 = no change, +255 = max brightness

IMG_FILTER_CONTRAST
-100 = max contrast, 0 = no change, +100 = min contrast (note the direction!)

IMG_FILTER_COLORIZE
Adds (subtracts) specified RGB values to each pixel. The valid range for each color is -255...+255, not 0...255. The correct order is red, green, blue.
-255 = min, 0 = no change, +255 = max
This has not much to do with IMG_FILTER_GRAYSCALE.

IMG_FILTER_SMOOTH
Applies a 9-cell convolution matrix where center pixel has the weight arg1 and others weight of 1.0. The result is normalized by dividing the sum with arg1 + 8.0 (sum of the matrix).
any float is accepted, large value (in practice: 2048 or more) = no change

ImageFilter seem to return false if the argument(s) are out of range for the chosen filter.
nancy at hypertextdigital dot com
03-Aug-2006 02:16
This routine was just what I was looking for, I wanted web admin users to be able to recolour their uploaded photos (to go with a news item) either a blue tint or sepia to match the appearance of other colours used on the website.

Using a form with a select box containing the RGB values, I can give them the option of either of the two tints or no colourization at all, plus resize their images to the viewing size and a thumbnail image on the fly without having to use any other image editing software.
santibari at fibertel dot com
27-Feb-2006 11:37
A colorize algorithm wich preserves color luminosity (i.e black
will output black, and white will output white).
This works in PHP4 and is great for customizing interfaces
dinamically.

<?php
function colorize($img_src,$img_dest, $r, $g, $b)
{
if(!
$im = imagecreatefromgif($img_src))
  return
"Could not use image $img_src";
   
//We will create a monochromatic palette based on
//the input color
//which will go from black to white
//Input color luminosity: this is equivalent to the
//position of the input color in the monochromatic
//palette
$lum_inp=round(255*($r+$g+$b)/765); //765=255*3

//We fill the palette entry with the input color at its
//corresponding position

$pal[$lum_inp]['r']=$r;
$pal[$lum_inp]['g']=$g;
$pal[$lum_inp]['b']=$b;

//Now we complete the palette, first we'll do it to
//the black,and then to the white.

//FROM input to black
//===================
//how many colors between black and input
$steps_to_black=$lum_inp;       

//The step size for each component
if($steps_to_black)
 {
 
$step_size_red=$r/$steps_to_black;   
 
$step_size_green=$g/$steps_to_black;   
 
$step_size_blue=$b/$steps_to_black;   
 }

for(
$i=$steps_to_black;$i>=0;$i--)
 {
 
$pal[$steps_to_black-$i]['r']=$r-round($step_size_red*$i);
 
$pal[$steps_to_black-$i]['g']=$g-round($step_size_green*$i);
 
$pal[$steps_to_black-$i]['b']=$b-round($step_size_blue*$i);
 }

//From input to white:
//===================
//how many colors between input and white
$steps_to_white=255-$lum_inp;

if(
$steps_to_white)
  {
 
$step_size_red=(255-$r)/$steps_to_white;   
 
$step_size_green=(255-$g)/$steps_to_white;   
 
$step_size_blue=(255-$b)/$steps_to_white;   
  }
 else
 
$step_size_red=$step_size_green=$step_size_blue=0;

 
//The step size for each component
 
for($i=($lum_inp+1);$i<=255;$i++)
  {
 
$pal[$i]['r']=$r + round($step_size_red*($i-$lum_inp));
 
$pal[$i]['g']=$g + round($step_size_green*($i-$lum_inp));
 
$pal[$i]['b']=$b + round($step_size_blue*($i-$lum_inp));
  }
//--- End of palette creation

//Now,let's change the original palette into the one we
//created
for($c = 0; $c < $palette_size; $c++)
 {
 
$col = imagecolorsforindex($im, $c);         
 
$lum_src=round(255*($col['red']+$col['green']
                +
$col['blue'])/765);
 
$col_out=$pal[$lum_src];
 
imagecolorset($im, $c, $col_out['r'],
                               
$col_out['g'],
                               
$col_out['b']);
 }

 
//save the image file
 
imagepng($im,$img_dest);
 
imagedestroy($im);
}
//end function colorize
?>
webmaster at qudi dot de
31-Jan-2006 06:53
for a quick, ok-looking, sepia-effect (also in php4) I just use this little fellow, since a real implementation of sepia was just way too slow.

function pseudosepia(&$im,$percent){
      $sx=imagesx($im);
      $sy=imagesy($im);
      $filter=imagecreatetruecolor($sx,$sy);
      $c=imagecolorallocate($filter,100,50,50);
      imagefilledrectangle($filter,0,0,$sx,$sy,$c);
      imagecopymerge($im,$filter,0,0,0,0,$sx,$sy,$percent);
}
a php user at nowhere dot com
20-Dec-2005 12:48
http://www.hudzilla.org/phpbook/read.php/11_2_15
for more detailed info, and some <i>arg</i> guidelines.
vdepizzol at hotmail dot com
04-Sep-2004 01:36
Examples using imagefilter():

<?php
$im
= imagecreatefrompng('dave.png');
if (
$im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
    echo
'Image converted to grayscale.';
   
imagepng($im, 'dave.png');
} else {
    echo
'Conversion to grayscale failed.';
}

imagedestroy($im);
?>

/////////////////////////////

<?php
$im
= imagecreatefrompng('sean.png');
if (
$im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20)) {
    echo
'Image brightness changed.';
   
imagepng($im, 'sean.png');
} else {
    echo
'Image brightness change failed.';
}

imagedestroy($im);
?>

/////////////////////////////

<?php
$im
= imagecreatefrompng('philip.png');

/* R, G, B, so 0, 255, 0 is green */
if ($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0)) {
    echo
'Image successfully shaded green.';
   
imagepng($im, 'philip.png');
} else {
    echo
'Green shading failed.';
}

imagedestroy($im);
?>
kees at tweakers dot net
20-Jul-2004 06:26
From what i have been able to find from this function, it accepts the following arguments:
        IMG_FILTER_NEGATE
        IMG_FILTER_GRAYSCALE
        IMG_FILTER_EDGEDETECT
        IMG_FILTER_GAUSSIAN_BLUR
        IMG_FILTER_SELECTIVE_BLUR
        IMG_FILTER_EMBOSS
        IMG_FILTER_MEAN_REMOVAL

The following arguments need one or more arguments.
        IMG_FILTER_SMOOTH, -1924.124
        IMG_FILTER_COLORIZE, -127.12, -127.98, 127
        IMG_FILTER_CONTRAST, -90
        IMG_FILTER_BRIGHTNESS, 98
       
I haven't tested them all, the names speak for themselves.

imagefontheight> <imagefilltoborder
Last updated: Sat, 24 Mar 2007
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites