<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

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

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

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

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

Какая тема Вас интересует больше?

Масштабирование изображений в PHP

Масштабирование изображений в PHP

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

Давайте сразу приведу код функции масштабирования изображения на PHP:

<?php
  /*
  $w_o и h_o - ширина и высота выходного изображения
  */
  function resize($image, $w_o = false, $h_o = false) {
    if (($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;
    }
    /* Если указать только 1 параметр, то второй подстроится пропорционально */
    if (!$h_o) $h_o = $w_o / ($w_i / $h_i);
    if (!$w_o) $w_o = $h_o / ($h_i / $w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения
    imagecopyresampled($img_o, $img_i, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i); // Переносим изображение из исходного в выходное, масштабируя его
    $func = 'image'.$ext; // Получаем функция для сохранения результата
    return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции
  }
  /* Вызываем функцию с целью уменьшить изображение до ширины в 100 пикселей, а высоту уменьшив пропорционально, чтобы не искажать изображение */
  resize("image.jpg", 100); // Вызываем функцию
?>

Вот такая полезная и простая функция легко позволяет сжимать и растягивать изображения на PHP, при этом при необходимости и сохранять пропорции.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

lev_100rus lev_100rus 25.01.2013 16:49:39

Спасибо!

Ответить

sab-ilnaz sab-ilnaz 26.01.2013 08:37:27

В этом случаи на браузер загружается изображения не 400х300, а 100х75(например), да? Я правильно понял? Значит результат не аналогично этому: <img src="pic.jpg" width="100">? И на скорость загрузки изображения влияет. Если да, то это то что я искал. Спасибо!

Ответить

sab-ilnaz sab-ilnaz 26.01.2013 12:36:26

Все, проверил ваш код. Это то что я искал. Спасибо! Супер статья!

Ответить

ilnaz123 ilnaz123 26.03.2013 16:47:30

!!!

Ответить

malina95 malina95 01.04.2013 21:04:44

И в правду очень полезная функция, уже в 7 раз меня спасает.

Ответить

Borislav Borislav 04.02.2017 18:54:35

Все скопировал, вставил. Но при написании кода. $img = imageCreateFromJpeg("./img_transaction/404.jpg"); $img1 = resize($img,200); imagejpeg($img1); Но вместо картинки выводится маленькое белое окошко. Если ф-цию resize убрать, то картинка выводится

Ответить

opiums opiums 10.02.2020 16:36:01

Отличный код, но он будет сжирать прозрачность у png и jpg, выкладываю дополнение: $img_o = imagecreatetruecolor($w_o, $h_o); /* Создаём дескриптор для выходного изображения */ if($ext == 'png' || $ext == 'gif') { /* Сохраняем прозрачность (альфа-канал) для png и gif */ imagealphablending($img_o, false); imagesavealpha($img_o, true); } imagecopyresampled($img_o, $img_i, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i); /* Переносим изображение из исходного в выходное, масштабируя его */ Вставлять внутри функции, начало и конец я указал

Ответить

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