| Rubrika Php / mysql
Diskusia k článku
Čiernobiele obrázky v PHP
Šeliga Adam
27. 08. 2008, 14:56
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
27. 08. 2008, 14:25
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
27. 08. 2008, 13:54
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
27. 08. 2008, 13:00
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
26. 08. 2008, 23:47
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äť
Pridať komentár
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

