Навигация
Календарь
« Июль 2007 » Пн Вт Ср Чт Пт Сб Вс 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Популярное
Дружественные ресурсы
25 июля 2007 :
Конвертация изображения в grayscale с помощью PHP и библиотеки GD.
Собственно, его код:
<?php // Исходный файл .jpg $file = 'test_file.jpg'; header('Content-type: image/jpeg'); list($width, $height) = getimagesize($file); $source = imagecreatefromjpeg($file); $bwimage= imagecreate($width, $height); for ($c=0;$c<256;$c++) { $palette[$c] = imagecolorallocate($bwimage,$c,$c,$c); } function yiq($r,$g,$b) { return (($r*0.299)+($g*0.587)+($b*0.114)); } // Пиксел за пикселом обходим исходное изображение 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 = yiq($r,$g,$b); imagesetpixel($bwimage,$x,$y,$palette[$gs]); } } // выводим черно-белое изображение imagejpeg($bwimage); ?>
Если оформить этот код в функцию, то можно вызывать ее по мере необходимости (если у кого-то такая необходимость вдруг появится).
Скачать скрипт
конвертации изображения в grayscale с помощью PHP и библиотеки GD .
Похожие новости:
Автоматическое создание thumbnails (тумбы, превьюшки) на php. Ограничение количества загрузок с одного IP-адреса. Анализ прочности позиций сайта в ТОП Яндекс. Как узнать, когда на сайт заходил поисковый бот? Ноутбук Asus VX2 yellow
уже после опубликования этого скрипта я подумал: а не изобретение ли это велосипеда? И точно, есть стандартное решение в документации по PHP :) <?php $im = imagecreatefrompng('dave.png'); if ($im && imagefilter($im, IMG_FILTER_GRAYSCALE)) { echo 'Image converted to grayscale.'; imagepng($im, 'dave.png'); } else { echo 'Conversion to grayscale failed.'; } imagedestroy($im); ?>
[ ]
В стандартном решении работа идет с png файлом. А с jpg тоже так можно?
[ ]
Поскольку imagefilter() добавлен только в PHP 5, то вот немножечко модернизированный код, с поддержкой и не truecolor-картинок. <? // Исходный файл .jpg $file = 'test_file.jpg'; header('Content-type: image/jpeg'); list($width, $height) = getimagesize($file); $source = imagecreatefromjpeg($file); $bwimage= imagecreate($width, $height); for ($c=0;$c<256;$c++) { $palette[$c] = imagecolorallocate($bwimage,$c,$c,$c); } function yiq($r,$g,$b) { return (($r*0.299)+($g*0.587)+($b*0.114)); } // Пиксел за пикселом обходим исходное изображение for ($y=0;$y<$height;$y++) { for ($x=0;$x<$width;$x++) { $rgb_tc = imagecolorat($source,$x,$y); $ar_rgb = imagecolorsforindex($source, $rgb_tc); $r = $ar_rgb["red"]; $g = $ar_rgb["green"]; $b = $ar_rgb["blue"]; $gs = yiq($r,$g,$b); imagesetpixel($bwimage,$x,$y,$palette[$gs]); } } // выводим черно-белое изображение imagejpeg($bwimage); ?>
[ ]
Очень красиво! Спасибо!
[ ]
Спасибо за готовое решение
[ ]
Извините за глупый вопрос, но как этим пользоваться? Я особо не продвинут в программировании, но мне оч надо картинки jpg в grayscale переводить...
[ ]
Познавательно
[ ]
Автору огромный респект
[ ]
Думаю, что и без моих ценных указаний справитесь
[ ]
Кеш никак падлюка не хочет очищаться
[ ]
Скоро буду вынужден попрощаться с подобным, не иначе
[ ]
Парни и девушки смелее оставляем свои коменты!!
[ ]
Автору 1! Спасибки! мне понравалось!
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]