Главная
>>
Каталог задач
>>
Веб-разработка
>>
Серверный скриптинг
>>
Работа с изображениями
>>
Масштабирование, пропорциональное изменение размеров картинки
Масштабирование, пропорциональное изменение размеров картинки
Aвтор:
this
Дата:
26.03.2006
Просмотров: 101383
реализации(php: 6шт...)
+добавить
Задача возникает при создании превьюшек(небольших иконок) из имеющихся больших изображений. В данном случае необходимо сделать уменьшенный пропорциональный вариант нашей картинки, высота и ширина которого не будет превышать заданных значений.
Формализация
На входе:
- Путь к файлу содержащему исходное большое изображение
- Путь к файлу, в котором будет получена уменьшенная копия
- Максимально допустимая ширина уменьшенной копии
- Максимально допустимая высота уменьшенной копии
На выходе нужно чтобы по пути в п.2 - мы получили бы искомую превьюшку, размеры которой не превышают указанных.
Алгоритм
- Получаем размеры исходной картинки
- На их основе рассчитываем коэфициент пропорции по отношению к уменьшенной копии
- На основе рассчитанного коэфициэнта - получаем новые размеры.
- Уменьшаем исходное изображение до указанных размеров.
Все пункты кроме 2-го - не представляют большого интереса, т.к. реализуются специфическими фукнциями того или иного языка и легко находятся в документации.
П.2 - может быть реализован по-разному. Нужно найти такой коэфициэнт, который даст новые высоту и ширину, не превышающие указанные.
Для этого нужно рассчитывать пропорцию от большего значения из 2-х(высота и ширина исходной картинки):
// Рассчитываем коэфициент
// imgWidth, imgHeight - исходные размеры
if imgWidth > imgHeight
ratio = maxWidth / imgWidth
else
ratio = maxHeight / imgHeight
newWidth = ratio * imgWidth
newHeight = ratio * imgHeight
Реализации:
php(6)
+добавить
1)
Вычисление коэфициэнта пропорции от большей величины на php, code #99[автор:this]
2)
Вариант №1 из комментов к документации php на php, code #100[автор:-]
3)
Вариант №2 из комментов к документации php на php, code #101[автор:-]
4)
Вариант №3 из комментов к документации php на php, code #102[автор:-]
5)
Вариант №4 из комментов к документации php на php, code #103[автор:-]
6)
php image resize на php, code #628[аноним:Сергей]