Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

| Rubrika Php / mysql

Čiernobiele obrázky v PHP

Na firemnej stránke http://www.altamira.sk máme obrázky aktuálnych realizácií čiernobiele. Prevod vstupného obrázku do B&W je realizovaný automaticky. Je na to použitá pomerne jednoduchá funkcia.

function rgbToGrayscale($input,$output,$type) {
 
switch($type) {
 
   case 'jpg':
     $header = 'image/jpeg';
     $fce = imagecreatefromjpeg($input);
     break;
   case 'gif':
     $header = 'image/gif';
     $fce = imagecreatefromgif($input);
     break;
   case 'png':
     $header = 'image/png';
     $fce = imagecreatefrompng($input);
     break;
 
}
 
list($width, $height) = getimagesize($input);
$source = $fce;
 
$bwimage= imagecreate($width, $height);
for ($c=0;$c<256;$c++) {
        $palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);
}
 
for ($y=0;$y<$height;$y++) {
  for ($x=0;$x<$width;$x++) {
        $rgb = imagecolorat($source,$x,$y);
 
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
 
        $gs = $this->makeGrayscale($r,$g,$b);
        imagesetpixel($bwimage,$x,$y,$palette[$gs]);
  }
}
 
switch($type) {
 
   case 'jpg':
        imagejpeg($bwimage,$output);
        break;
   case 'gif':
        imagegif($bwimage,$output);
        break;
   case 'png':
        imagepng($bwimage,$output);
        break;
}
 
 
}

Princípom funkcie je prechádzanie vstupného obrázku pixel po pixeli, zisťovanie RGB hodnoty daného pixlu a následny prevod do čiernobieleho pomocou tejto funkcie.

function makeGrayscale($r,$g,$b) {
   return (($r*0.299)+($g*0.587)+($b*0.114));
}

Autorom funkcie je Angela Bradley.
Zdroj: http://php.about.com/…scale_gd.htm

Tomáš Mašek

Naspäť naspäť Pridať komentár k článku prispieť do diskusie [5]

Vyhľadávanie

v názvoch článkov v textoch článkov

Pridať komentár

Koľko je na ruke prstov?

RSS