Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ WEB Разработка ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Codeigniter: image manipulation


Инициализация класса
Как и большинство других классов CodeIgniter, класс для работы с изображениями инициализируется в вашем контроллере посредством функции 
$this->load->library:

$this->load->library('image_lib');

После загрузки библиотека готова к использованию. Объект класса доступен как 
$this->image_lib

Обработка изображений
Вне зависимости от типа обработки, которую вы собираетесь выполнять (масштабирование, обрезка, вращение или наложение ватермарка), основные действия идентичны. Вы будете устанавливать некоторые параметры, соответствующие действию, которые вы собираетесь выполнить, и затем вызывать одну из четырех функций. Например, для создания миниатюры изображения:

$config['image_library'] = 'gd2';
$config['source_image'] = './uploads/youfon.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 75;
$config['height'] = 50;

$this->load->library('image_lib', $config); 

$this->image_lib->resize();

Код выше говорит функции image_resize искать изображение youfon.jpg, находящееся в директории ./uploads/, затем создать миниатюру размером 75 на 50 пикселей, используя GD2 image_library. Так как включена опция maintain_ratio, пропорции миниатюры будет как можно ближе к оригинальной ширине и высоте. Миниатюра будет называться mypic_thumb.jpg 

Функции обработки
Доступны четыре функции для обработки изображений:
$this->image_lib->resize() 
$this->image_lib->crop() 
$this->image_lib->rotate() 
$this->image_lib->watermark() 
$this->image_lib->clear() 
Эти функции возвращают булево TRUE при успехе или FALSE при неудаче. Если у них что-то не получается, вы можете получить сообщения об ошибках с этой функцией:

echo $this->image_lib->display_errors();

Хорошей практикой является использование функции в условии, показывающее ошибки при неудаче, к примеру так:

if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}

Параметры
Параметры, описанные ниже, позволяют вам приспосабливать обработку изображений к вашим потребностям.
Заметим, что не все параметры доступны для каждой функции. Например, оси X и Y нужны только для обрезки изображения. Аналогично, ширина и высота никак не влияют на обрезку. Столбец «применяемость» отображает, к какой функции применим указанный параметр.
Легенда:
R - Масштабирование (Resizing) 
C - Обрезка (Cropping) 
X - Вращение (Rotation) 
W - Наложение ватермарка (Watermarking) 

 


$this->image_lib->resize()
Функция масштабирования изображения позволит вам изменить размер оригинального изображения, создать копию (с масштабированием или без него), или создать миниатюру.
Практически нет различия между созданием копии и созданием миниатюры, за исключением того, что миниатюра имеет маркер, как часть имени (например, mypic_thumb.jpg).
Все параметры, перечисленные в таблице выше, доступны для этой функции, за исключением трех: rotation_angle, x_axis и y_axis.

Создание миниатюры
Функция масштабирования создает файл миниатюры (и сохраняет оригинал), если вы установите парамер в TRUE:

$config['create_thumb'] = TRUE;

Этот единственный параметр определяет, создавать миниатюру или нет.

Создание копии
Функция масштабирования создаст копию изображения (и сохранит оригинал), если вы установите путь и (или) укажете новое имя файла в этом пераметре:

$config['new_image'] = '/path/to/new_image.jpg';

Замечания насчет этого параметра:
Если указано только имя нового изображения, оно будет помещено в ту же директорию, где находится оригинальное 
Если указывать только путь, новое изображение будет размещено в новом месте, с тем же именем, что и оригинальное. 
Если указать и путь и имя файла, новое изображение будет размещено по новому пути и с новым именем. 

Масштабирование оригинального изображения
Если не использован ни один из параметров, указанных выше (create_thumb и new_image), функция масштабирования будет обрабатывать оригинальное изображение.

Наложение ватермарков (водяных знаков)
Функция наложения ватермарков требует библиотеку GD/GD2.
Два типа ватермарков
Есть два типа ватермарков, которые вы можете использовать:
Текст: Сообщение будет сгенерировано используя текст, с шрифтом True Type, который вы указали, или используя родной вывод текста, который предоставляет GD. Если вы используете True Type, ваша инсталляция GD должна быть скомпилирована с поддержкой True Type (чаще всего так, но не всегда). 
Наложение: Ватермарк генерируется наложением изображения, обычно прозрачный PNG или GIF. 

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

$config['source_image'] = './uploads/youfon.jpg';
$config['wm_text'] = 'Copyright 2006 - John Doe';
$config['wm_type'] = 'text';
$config['wm_font_path'] = './system/fonts/texb.ttf';
$config['wm_font_size'] = '16';
$config['wm_font_color'] = 'ffffff';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'center';
$config['wm_padding'] = '20';

$this->image_lib->initialize($config); 

$this->image_lib->watermark();

Пример выше использует 16-пиксельный шрифт True Type, чтобы создать текст "Copyright 2006 - John Doe".
 Ватермарк будет размещен внизу по центру изображения, в 20 пикселях от нижней границы изображения.

Параметры наложения ватермарков
Эта таблица показывает парамеры, которые доступны для обоих типов наложения ватермарков (текст и изображение)

 

Теперь пример переделанного контроллера Blog:

<?php
class Blog extends CI_Controller {

        public function index()
        {
            //resize
            
            $config['image_library'] = 'gd2';
            $config['source_image'] = './uploads/youfon.jpg';
            $config['create_thumb'] = TRUE;
            $config['maintain_ratio'] = TRUE;
            $config['width'] = 75;
            $config['height'] = 50;

            $this->load->library('image_lib', $config); 

            $this->image_lib->resize();
            
            //watermark
            $conf['source_image'] = './uploads/youfon1.jpg';
            $conf['new_image'] = './uploads/';
            $conf['create_thumb'] = TRUE;
            $conf['wm_text'] = 'Copyright 2006 - John Doe';
            $conf['wm_type'] = 'text';
            $conf['wm_font_path'] = './system/fonts/texb.ttf';
            $conf['wm_font_size'] = '16';
            $conf['wm_font_color'] = '#000000';
            $conf['wm_vrt_alignment'] = 'top';
            $conf['wm_hor_alignment'] = 'center';
            $conf['wm_padding'] = '40';
            
            $this->load->library('image_lib');
            
            $this->image_lib->initialize($conf); 

            $this->image_lib->watermark();

        }
        

        
}

Вызовем http://site/index.php/blog/ и проверим указанный каталог.


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект