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

| Rubrika Php / mysql

Diskusia k článku

Čiernobiele obrázky v PHPZobraziť článok

Šeliga Adam
Dátum a čas 27. 08. 2008, 14:56 E-mail postmaster [a] centrumphp.net

Funguje to perfektne, ale má to chybičky, keď mám nastavené priehladné pozadnie u png, ale funguje :) Moc pekný návod :)

tomas masek
Dátum a čas 27. 08. 2008, 14:25 E-mail masek [a] altamira.sk

zaklady objektoveho programovania tu urcite tiez raz vysvetlime :).

skus si obidve uvedene funkcie dat to triedy:


class nazovTriedy {

function rgbToGrayscale() {
}

function makeGrayscale() {
}

}



potom si triedu includni do svojho suboru a inicializuj:


include \'trieda.php\';
$img = new nazovTriedy;


a dalej uz plati to co som pisal nizsie

Šeliga Adam
Dátum a čas 27. 08. 2008, 13:54 E-mail postmaster [a] centrumphp.net

Ale keď napíšem: $img -> rgbToGrayscale("images/body-bg.png","images/bw-body-bg.png","png");
tak mi to hlási:Fatal error: Call to a member function rgbToGrayscale() on a non-object in /home/www/centrumphp.net/www/blackandwhite.php on line 69

A ked to $img -> dam prec tak zase hlasi: Fatal error: Using $this when not in object context in /home/www/centrumphp.net/www/blackandwhite.php on line 40

v OOP sa nevyznam, prosim help :)

P.S.: Good web, len tak ďalej :)

tomas masek
Dátum a čas 27. 08. 2008, 13:00 E-mail masek [a] altamira.sk

ano, pouzitie je jednoduche:

$img->rgbToGrayscale($input,$output,$typ);

pricom
$input = nazov a cesta k vstupnemu obrazku
$output = nazov a cesta k vystupnemu obrazku (trebars bude v samostatnom foldri "bw")
$typ = jpg/gif/png

Šeliga Adam
Dátum a čas 26. 08. 2008, 23:47 E-mail postmaster [a] centrumphp.net

A ako túto funkciu použijem? Napríklad, keď mám obrázok neviem aky napriklad na http://neco.sk/img.png tak ako to prerobím na čierno biely pomocou tejto funkcie? rgbToGrayscale("img.png","????","png"); Asi nejak takto alebo ako :D

Naspäť naspäť

Pridať komentár

Koľko je na ruke prstov?

Náhľad článku

Č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

RSS