<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Обрезка изображений в PHP

Обрезка изображений в PHP

Часто приходится принимать какие-то изображения от пользователей на сайте, например, те же аватарки. Но у любого сайта есть вёрстка, которая определяет размер тех или иных изображений. И выходы за определённые пределы размеров сильно портят всю вёрстку. Поэтому тут можно либо сжать изображение, сделав его более мелким, либо обрезать. Давайте с Вами разберём обрезку изображений в PHP.

Сразу привожу код, который я написал для обрезания изображения в PHP:

<?php
  /*
  $x_o и $y_o - координаты левого верхнего угла выходного изображения на исходном
  $w_o и h_o - ширина и высота выходного изображения
  */
  function crop($image, $x_o, $y_o, $w_o, $h_o) {
    if (($x_o < 0) || ($y_o < 0) || ($w_o < 0) || ($h_o < 0)) {
      echo "Некорректные входные параметры";
      return false;
    }
    list($w_i, $h_i, $type) = getimagesize($image); // Получаем размеры и тип изображения (число)
    $types = array("", "gif", "jpeg", "png"); // Массив с типами изображений
    $ext = $types[$type]; // Зная "числовой" тип изображения, узнаём название типа
    if ($ext) {
      $func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения
      $img_i = $func($image); // Создаём дескриптор для работы с исходным изображением
    } else {
      echo 'Некорректное изображение'; // Выводим ошибку, если формат изображения недопустимый
      return false;
    }
    if ($x_o + $w_o > $w_i) $w_o = $w_i - $x_o; // Если ширина выходного изображения больше исходного (с учётом x_o), то уменьшаем её
    if ($y_o + $h_o > $h_i) $h_o = $h_i - $y_o; // Если высота выходного изображения больше исходного (с учётом y_o), то уменьшаем её
    $img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения
    imagecopy($img_o, $img_i, 0, 0, $x_o, $y_o, $w_o, $h_o); // Переносим часть изображения из исходного в выходное
    $func = 'image'.$ext; // Получаем функция для сохранения результата
    return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции
  }
  crop("image.jpg", 100, 100, 200, 50); // Вызываем функцию
?>

Я постарался тщательно прокомментировать код, поэтому, думаю, что всё с ним понятно. Конечно, в CSS есть возможность чётко задать размеры изображения, но Вы должны понимать, что глупо изображение 1600x1200 выводить с размером 160x120, так как сам файл будет грузиться очень долго, поэтому обрезание изображений в PHP может Вам пригодиться. Вдобавок, если Вам требуется не просто некая ширина, но и высота, например, 150x150, то через CSS можно сильно исказить изображение, поскольку пропорции у него могут быть другие. Поэтому и тут нам пригодится обрезка. А в одной из следующих статей мы разберём масштабирование изображений в PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (12):

lev_100rus lev_100rus 16.01.2013 16:14:18

А можно просто делать проверку при добавлении аватарки и писать предупреждение, если размер аватарки больше указанной

Ответить

malina95 malina95 16.01.2013 18:41:27

Типа так? $size = '.....'; if ($image_size > $size) die("Превышен максимальный размер картинки!!!");

Ответить

malina95 malina95 16.01.2013 18:46:11

Конечно это совершенно не то что мне надо было но хоть на это полюбуюсь

Ответить

sab-ilnaz sab-ilnaz 17.01.2013 11:04:15

Это код просто обрезает изображения? А можно как то, например, изображения 4000х3000 сделать 400х300? Не обрезая и не сжимая? На РНР?

Ответить

Admin Admin 17.01.2013 15:45:01

Такого не бывает, придётся либо сжать, сохранив изображение целиком, но уменьшив размеры, либо просто обрезать изображение.

Ответить

sab-ilnaz sab-ilnaz 18.01.2013 00:34:36

Спасибо за ответ! Я думал, а может РНР умеет обрабатывать файлы на уровне байтов? Если умеет, то нужен только алгоритм сжатия. ИМХО.

Ответить

wasa1234567123698745 wasa1234567123698745 24.03.2013 22:10:17

Здравствуйте,Михаил,дайте мне код с файла functions.php ето файл из курса создание панель пользователя.Если дадите я Вам буду очень благодарен,бо етот код очень писать долго.Заранее Вам спасибо Михаил!

Ответить

Admin Admin 25.03.2013 04:14:53

Пишите на myrusakov@gmail.com и сразу сообщите там ещё название курса.

Ответить

Scar Scar 27.07.2013 12:45:51

Михаил, а как перекодировать при получении изображение из любого формата (jpg,gif) в png?

Ответить

Admin Admin 27.07.2013 17:53:33

Придется воспользоваться сторонней библиотекой для перекодирования.

Ответить

kalyan kalyan 10.12.2013 17:07:10

Михаил, нужно параллелограмм сделать. Возможно ли? Отрезать надо изображение с верхнего и нижнего краев. Получается надо отрезать наискось. Просто в работу функции не вникал.

Ответить

tikkiwiki tikkiwiki 11.12.2013 10:56:28

Николай, вникните в работу скрипта и поймете, что нет.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.