CodeLAB
на главную карта сайта обратная связь

Популярные задачи:

#Вычисление среднего, среднего отклонения, среднеквадратического отклонения и дисперсии заданной выборки. (46433 hits)
#Последовательный поиск и его оптимизации. (44737 hits)
#Числа Армстронга. (46118 hits)
#Передача данных из основного во всплывающее-popup окно через POST. (116817 hits)
#Рисование полусферы. (29028 hits)
#Сравнение алгоритмов сортировки массива. (182120 hits)
#сортировка пузырьком. (152822 hits)
#Динамическая очистка выпадающего списка (select) на javascript. (90866 hits)
#Отслеживание изменений файла. (37859 hits)
#Счетчик времени с точностью до микросекунд. (128761 hits)
#Овал, вписанный в прямоугольник. (37859 hits)
#Заполнение 2-го выпадающего списка (select) в соответствии с выбором в первом. (46239 hits)
#Валидация, динамическая проверка заполнения html форм. (209203 hits)
#Программное создание ссылок. (99854 hits)
#Поразрядная сортировка, общий принцип. (130615 hits)
#Рисование множества Мандельброта. (44348 hits)
#Рисование куба. (59872 hits)
#"The Java Programming Language" Ken Arnold, James Gosling, David Holmes листинги, код, примеры из книги, исходники. (61066 hits)
#Полезные утилиты, небольшие api и библиотеки и проч.. (69733 hits)
#Сортировка Шелла, обший принцип. (145033 hits)


Главная >> Каталог задач >> Веб-разработка >> Серверный скриптинг >> Работа с изображениями >> Масштабирование, пропорциональное изменение размеров картинки

Масштабирование, пропорциональное изменение размеров картинки

Aвтор:
Дата:
Просмотров: 100913
реализации(php: 6шт...) +добавить

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

Формализация

На входе:

  1. Путь к файлу содержащему исходное большое изображение
  2. Путь к файлу, в котором будет получена уменьшенная копия
  3. Максимально допустимая ширина уменьшенной копии
  4. Максимально допустимая высота уменьшенной копии

На выходе нужно чтобы по пути в п.2 - мы получили бы искомую превьюшку, размеры которой не превышают указанных.

Алгоритм

  1. Получаем размеры исходной картинки
  2. На их основе рассчитываем коэфициент пропорции по отношению к уменьшенной копии
  3. На основе рассчитанного коэфициэнта - получаем новые размеры.
  4. Уменьшаем исходное изображение до указанных размеров.

Все пункты кроме 2-го - не представляют большого интереса, т.к. реализуются специфическими фукнциями того или иного языка и легко находятся в документации.

П.2 - может быть реализован по-разному. Нужно найти такой коэфициэнт, который даст новые высоту и ширину, не превышающие указанные.

Для этого нужно рассчитывать пропорцию от большего значения из 2-х(высота и ширина исходной картинки):

 псевдокод: Расчет коэфициэнта пропорции  ссылка
  1. // Рассчитываем коэфициент
  2. // imgWidth, imgHeight - исходные размеры
  3. if imgWidth > imgHeight
  4. ratio = maxWidth / imgWidth
  5. else
  6. ratio = maxHeight / imgHeight
  7.  
  8. newWidth = ratio * imgWidth
  9. 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[аноним:Сергей]