Форум → Программирование → PHP для идиотов → Расширения PHP → Как обесцветить картинку средствами GD
Как обесцветить картинку средствами GD
-
-
21 ноября 2007 г. 11:11, спустя 5 дней 1 час 51 минуту
на там в исходниках глянь
http://welder.host-expert.com/hlam/thumb2.zip
Там всё заточено под php5, функция imagefilter в 4й не работает, а вот на хостинге стоит именно 4ка
в php5 серым рисунок можно сделать такimagefilter($im, IMG_FILTER_GRAYSCALE );
вот альтернатива для 4киif (imageistruecolor($im)) {
imagetruecolortopalette($im, false, 256);
}
for ($c = 0; $c < imagecolorstotal($im); $c++) {
$col = imagecolorsforindex($im, $c);
$gray = round(0.299 * $col['red'] + 0.587 * $col['green'] + 0.114 * $col['blue']);
imagecolorset($im, $c, $gray, $gray, $gray);
} -
23 ноября 2007 г. 21:36, спустя 2 дня 10 часов 25 минут
Предлагаю свой вариант решения. По данным O\'REILLY Pocket Reference все функции времен PHP 3.0.x :)
$img=imagecreatefromjpeg($f); // необходимо выбрать функцию, соответствующую типу изображения!
$w=imagesx($img);
$h=imagesy($img);
for ($i=0; $i<$h; $i++) {
for ($j=0; $j<$w; $j++) {
$col=imagecolorat($img, $j, $i);
$rgb=imagecolorsforindex($img, $col);
$b=$rgb["red"]+$rgb["green"]+$rgb["blue"];
$b=round($b/765*255);
$col=imagecolorallocate($img, $b, $b, $b);
imagesetpixel($img, $j, $i, $col);
}
}
imagejpeg($img);
P.S. идея с обесцвечиванием была взята отсюда (хехе, найдите 5 отличий :D ) http://hudzilla.org/phpwiki/index.php?title=Development:_ASCII_art_generator (кстати, это сайт автора моей любимой книги - Php in a nutshell).
Пожалуйста, авторизуйтесь, чтобы написать комментарий!