Общие вопросы

Статьи, материалы, руководства, учебники о web-разработке и web-дизайну.

Пропорциональное изменение размеров изображений

proportional image resizing

Иногда требуется для представления больших изображений создать уменьшенные их копии, чтобы их высота и ширина не превышала определённый размер, при этом, чтобы их размеры оставались пропорциональными исходному изображению. Сделать это можно несколькими способами:

  • Создать уменьшенные эскизы изображений в любом графическом редакторе;
  • Задать в свойствах изображения произвольную ширину и высоту, в пикселях или процентах (width="" height="");
  • При помощи PHP рассчитать пропорцию ширины и высоты изображения от большего значения к меньшему значению.
  • Также можно использовать различные php-функции с использованием библиотеки Graphics Library (GD).

В этой статье мы воспользуемся самым простым способом – рассчитаем при помощи PHP пропорцию ширины и высоты изображения. Для этого мы будем использовать следующий алгоритм:

  • Получаем размеры исходного изображения;
  • Задаём минимальную ширину и высоту будущего изображения;
  • Рассчитываем коэффициент пропорции по отношению к уменьшенной копии и на основе рассчитанного коэффициента - получаем новые размеры;
  • Уменьшаем ширину и высоту изображения до указанных размеров;
  • При помощи функции intval – получаем целочисленное значение размеров изображения;
  • Выводим изображение с полученными размерами.

В итоге мы получим следующий php-код:

<?php
/*
 * Рассчитываем пропорцию ширины и высоты  изображения 
 * от большего значения к меньшему значению
*/

// Исходное  изображение
echo '<img  src="/image.jpg" width="793" height="595"  alt="img" /><br />';
// 1. Получаем размеры исходного изображения list($imgWidth, $imgHeight) = getimagesize('image.jpg');
echo 'Ширина исходного изображения - ' . $imgWidth . '<br />'; echo 'Высота исходного изображения - ' . $imgHeight . '<br />';
// 2. Задаём минимальную ширину и высоту будущего изображения $maxWidth = '150';
$maxHeight = '150';
// 3. Рассчитываем коэффициент пропорции по отношению к уменьшенной копии
// На основе рассчитанного коэффициента - получаем новые размеры
if ($imgWidth > $imgHeight) { $ratio = $maxWidth / $imgWidth; } else { $ratio = $maxHeight / $imgHeight; }
// 4. Уменьшаем исходное изображение до указанных размеров $newWidth = $ratio * $imgWidth;
$newHeight = $ratio * $imgHeight;
echo 'Новая ширина изображения - ' . $newWidth . '<br />'; echo 'Новая высота изображения - ' . $newHeight . '<br />';
// 5. При помощи функции intval – получаем целочисленное значение размеров изображения $newWidth = intval($newWidth); $newHeight = intval($newHeight);
echo 'Целочисленная ширина - ' . $newWidth . '<br />'; echo 'Целочисленная высота - ' . $newHeight . '<br />';
// 6. Выводим изображение с полученными размерами echo '<img src="/image.jpg" width="' . $newWidth . '" height="' . $newHeight . '" alt="img" />';
?>

При выполнении этого кода, в браузере вы должны увидеть что-то подобное этому:

JHighslide

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


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

GeneticsPro
close

Рассылка 'D-G-S'.ru

Подпишитесь на рассылку новостей сайта 'D-G-S'.ru!

  • Новые расширения Joomla! от сторонних разработчиков.
  • Новые расширения Joomla! от D-G-S.
  • Статьи и новости о CMS Joomla!
  • Статьи о web-разработке и многое другое…
Будьте всегда в курсе событий мира Joomla!
Мы на Facebook
Мы на Twitter
Страница в Google+
Мы ВКонтакте
Наш канал YouTube
FAQ
Инструментарий