Autor | Zpráva | ||
---|---|---|---|
regvac Profil * |
#1 · Zasláno: 22. 4. 2011, 15:37:04
Ahoj,
mám dotaz, zda je možné nějakou php funkcí jednobarevně obarvit černobílou fotku, např. dát jí barevný nádech? Z této fotky [/url] udělat tuto [url=http://www.ata4.cz/color/modra.jpg] či tuto [url=http://www.ata4.cz/color/cervena.jpg][/url], atd... Díky |
||
regvac Profil * |
#2 · Zasláno: 22. 4. 2011, 15:39:40
|
||
Louka Profil |
#3 · Zasláno: 22. 4. 2011, 15:48:01
Myslím, že takovou funkci by sis musel napsat sám, o žádné nativní nevím.
|
||
regvac Profil * |
#4 · Zasláno: 22. 4. 2011, 15:51:00
A alespoň nějaký nápad, jak to zrealizovat?
|
||
okolojdouci Profil * |
#5 · Zasláno: 22. 4. 2011, 15:58:30
Jestli "obarvit" znamená posunout celou paletu někam, tak na to jsou v php funkce. Prostě projdeš všechny pixely a každému z nich dejme tomu ubereš 20 % červené.
http://cz.php.net/manual/en/book.image.php |
||
Louka Profil |
#6 · Zasláno: 22. 4. 2011, 16:03:30
PHP funkce které upotřebíš:
http://cz.php.net/manual/en/function.imagecreatetruecolor.php http://cz.php.net/manual/en/function.imagesetpixel.php Ano, myslel jsem to tak, že není jedna fce, která by to udělala za tebe, ale je to možné s využitím stávajících. |
||
regvac Profil * |
#7 · Zasláno: 22. 4. 2011, 16:05:44
okolojdouci:
„znamená posunout celou paletu někam“ Ano, to je ono, jen která z těch odkazovaných funkcí mi pomůže? |
||
regvac Profil * |
#8 · Zasláno: 22. 4. 2011, 16:06:32
Omluva, neměl jsem zaktualizovanou stránku, tak můj dotaz přišel až po tvé odpovědi
|
||
Louka Profil |
#9 · Zasláno: 22. 4. 2011, 16:20:34 · Upravil/a: Louka
<?php $im = imagecreatefrompng("image.png"); // tady vytáhni $width a $height jako rozměry $im $width = imagesx($im); $height = imagesy($im); $novy = imagecreatetruecolor($width, $height); $y = 0; while ( $y <= $height ) { $x = 0; while ( $x <= $width ) { $rgb = imagecolorat($im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; // ted je v $r $g $b ulozena barva pixelu... zpracuj jí a použij imagesetpixel // na vytvoření nového obrázku který je v $novy /* zpracuj barvu - to je na tobě jak */ imagesetpixel($novy, $x, $y, $nova_barva); } } EDIT: http://cz.php.net/manual/en/function.imagecolorallocate.php tohle ti pomůže při vytvoření $nova_barva :) |
||
regvac Profil * |
#10 · Zasláno: 22. 4. 2011, 16:40:55
Už to mám po svém:-)
<?php function html2rgb($color) { if ($color[0] == '#') {$color = substr($color, 1);} if (strlen($color) == 6) {list($r, $g, $b) = array($color[0].$color[1], $color[2].$color[3], $color[4].$color[5]);} elseif (strlen($color) == 3) {list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);} else {return false;} $r = hexdec($r); $g = hexdec($g); $b = hexdec($b); return array($r, $g, $b); } $file = 'cb.png'; $obr = imagecreatefrompng($file); $color = "ff0000"; $color_rgb = html2rgb($color); list($width, $height, $type, $attr) = getimagesize($file); for ($x = 0; $x < $width; $x++) { for ($y = 0; $y < $height; $y++) { $rgb = imagecolorat($obr, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $rc = round($r/255*$color_rgb[0]); $gc = round($g/255*$color_rgb[1]); $bc = round($b/255*$color_rgb[2]); $color = imagecolorallocate($obr, $rc, $gc, $bc); imagesetpixel($obr, $x, $y, $color); } } header("Content-Type: image/png"); imagepng($obr); imagedestroy($obr); ?> |
||
Časová prodleva: 13 let
|
0