Блог старого компьютера

Блог старого компьютера


Главная PHP Надпись на изображении (продолжение) PHP

Надпись на изображении (продолжение) PHP

14.11.2012 05:53 Администратор PHP
Печать PDF

Так как последнее время я очень много работаю на php с графикой то я решил написанные функции выкладывать тут. Сегодня мне понадобилось сделать надпись на изображении, но с условием что изображение может иметь различное расширение (jpg, png, gif). Ранее я публиковал похожую статью, но она мне сейчас совершенно не подходила и наверное годилась только для ознакомления.

 Я Дописал функцию, добавил в нее автоопределение расширения (если можно так назвать), ну и переименовал ее так как прежнее ее название все же несколько некорректно (она называлась php_paint - рисовать php что ли).

Вообщем предоставляю более универсальную функцию:

function write_on_image($src, $txt, $size, $top, $left, $dest){
if (!file_exists($src)) return false;
$size_img = getimagesize($src);
$format = strtolower(substr($size_img['mime'], strpos($size_img['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
$im = $icfunc($src);
$font = 'tahoma.ttf';
$text_color = imagecolorallocate($im,0,0,0); // надпись делаем черным цветом указывается в RGB
imagettftext($im, $size, 0, $left, $top, $text_color, $font, $txt); 
imageJpeg($im, $dest, 100);
}

 Так же функцию можно еще доработать и тогда можно будет передавать ей название шрифта и цвет в таком случае функцию можно будет считать универсальной для добавления надписи на изображение. В данном случае мне этого ненужно было. Шрифт мне нужен был один, и цвет тоже.

Хочу так же отметить что переменная $font это не название шрифта, а путь до него.

Думаю передаваемые параметры понятны и в объяснении не нуждаются, хотя нет, все же добавлю пример использования функции.

write_on_image("1.jpg", "Текст надписи", "20", "10", "10", "1z.jpg");

 Данный пример пишет на изображении 1.jpg текст "Текст надписи" шрифтом с размером 20 по кординатам x = 10, y = 10 и сохраняет результат в файл 1z.jpg.

Сообственно все!

Комментарии  

 
0 #5 Administrator 25.05.2015 17:17
Цитирую greck:
После сохранения изображения нужно разрушить идентификатор изображения, иначе функция будет жрать память.

Добавьте после последней строчки:
imagedestroy($i m);

Совершенно верно, код дан только для примера..
Цитировать
 
 
0 #4 greck 25.08.2014 20:27
После сохранения изображения нужно разрушить идентификатор изображения, иначе функция будет жрать память.

Добавьте после последней строчки:
imagedestroy($i m);
Цитировать
 
 
+1 #3 Administrator 11.10.2013 16:43
Цитирую masik:
Это продолжение...

Вопросы:
--- В какой файл вставить Ваш скрипт? В "GALERIA.PHP" или в какой-то отдельный файл?
--- Между какими тегами?
--- файл 1z.jpg потом удаляется или остается навсегда?
--- "write_on_image( "1.jpg", "Текст надписи", "20", "10", "10", "1z.jpg");" вставлять в теги РНР или нет?

Извините, что задаю столько вопросов. Просто уже второй день бьюсь и никак не могу запустить скрипт.
Может у меня сервер неправильно настроен?
Хотя на Денвере тоже не идет. Денвер просто виснет.

С уважением...


В зависимсоти от того как вам удобнее. Например можно создать php файл в папке с изображениями в него засунуть функцию что выше размещена.

Далее обойдем все файлы которые есть в папке с помощью например такого подхода http://wemarus.ru/php/90-vse-izobrazheniya-iz-papki-php.html.

Вообщем весь ваш коду будет выглядеть вот так:

открываем PHP

function write_on_image( $src, $txt, $size, $top, $left, $dest){
if (!file_exists($ src)) return false;
$size_img = getimagesize($s rc);
$format = strtolower(subs tr($size_img['mime'], strpos($size_im g['mime'], '/')+1));
$icfunc = "imagecreatefrom " . $format;
if (!function_exis ts($icfunc)) return false;
$im = $icfunc($src);
$font = 'tahoma.ttf';
$text_color = imagecoloralloc ate($im,0,0,0); // надпись делаем черным цветом указывается в RGB
imagettftext($i m, $size, 0, $left, $top, $text_color, $font, $txt);
imageJpeg($im, $dest, 100);
}

foreach (glob("*.jpg") as $filename){
write_on_image( $filename, "Текст надписи", "20", "10", "10", $filename);
}


Закрываем PHP

В результате на всех изображениях в вашей папке будет надпись "Текст надписи"

Код не проверял, если будете использовать то сделайте копию оригинала ваших изображений.
Цитировать
 
 
0 #2 masik 09.10.2013 15:54
Это продолжение...

Вопросы:
--- В какой файл вставить Ваш скрипт? В "GALERIA.PHP" или в какой-то отдельный файл?
--- Между какими тегами?
--- файл 1z.jpg потом удаляется или остается навсегда?
--- "write_on_image( "1.jpg", "Текст надписи", "20", "10", "10", "1z.jpg");" вставлять в теги РНР или нет?

Извините, что задаю столько вопросов. Просто уже второй день бьюсь и никак не могу запустить скрипт.
Может у меня сервер неправильно настроен?
Хотя на Денвере тоже не идет. Денвер просто виснет.

С уважением...
Цитировать
 
 
+1 #1 masik 09.10.2013 15:53
Уважаемый wemarus!
Перелопатив весь интернет я наконец нашел на Вашем сайте то, что мне нужно.
Спасибо Вам за этот прекрасный скрипт.
Однако, по причине нулевых знаний в программировани и не смог его заставить работать.
Если Вам нетрудно, помогите пожалуйста.
- У меня есть папка "IMG". В ней находятся сотни фоток и их количество постоянно увеличивается.
- В корневой директории сайта находится файл "GALERIA.PHP". В этот файл загружаются фотки.
--- Задача: Написать на всех фотках какой-то текст.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела