![]() |
|
|
![]()
|
|
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Не могу логически разобрать как уменьшить картинку пропорционально..
Есть исходный размер картинки - ширина = width_src - высота = heigth_scr нужно уменьшить размер пропорционально, но чтобы - максимальная ширина = width_desc - максимальная высота = heigth_desc При этом если исходные размеры меньше конечных, то увеличения не должно быть помогите составить условие ;) зы видимо в понедельник никак не могу решить простую задачку -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| vedun |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
Что в вашем понимании максимальная ширина ? Если картинка уменьшается пропорционально и исходная ширина = width_src то результат будет = width_src*k, где k - коэффициент пропорциональности. Честно говоря вопрос не очень понятен.
|
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Коэффициент пропорциональности не должен превышать единицу. Так что считаем:
k = min (1, width_dest / width_src, heigth_dest / heigth_src) Добавлено через 2 минуты и 12 секунд k = min (1, width_dest / width_src, height_dest / height_src) -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
наверное не очень понятно объяснил. Суть простая - уменьшать картинку до тех пор пока ИЛИ ширина ИЛИ высота не будут равняться максимальному значению.
Добавлено через 6 минут и 58 секунд Peter, поясни свой пример.. Я пишу на PHP, функции могут иметь разную реализацию -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| vedun |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
kx = width_src / width_desc
ky = heigth_scr / heigth_desc если kx и ky меньше 1 то изменять размер не надо. Если нет то делишь ширину и высоту картинки на тот коэффициент который больше. Это сообщение отредактировал(а) vedun - 20.7.2011, 11:20 |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Если мы зададим коэффициент пропорциональности равным width_dest / width_src, то ширина прямоугольника как раз будет равна максимальной. Если height_dest / height_src, то высота станет равна максимальной. Но у нас же требование, чтобы ни ширина не превысила максимальную, ни высота, а также чтобы коэффициент увеличения не был больше 1. Значит, из этих трех значений надо выбрать наименьшее, а не то одно из требований будет нарушено.
Добавлено через 1 минуту и 59 секунд На этот вычисленный коэффициент надо *умножать*. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
что-то малость не получается... Опять же это простое пропорциональное уменьшение.. А если исходник 2000х1000, и нужно уменьшить до width_desc = 100 и heigth_desc = 200.. т.е. исходник "альбом", а конечник "книга"
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Значит, надо задачу более внятно поставить. Как говорится, в правильно поставленном вопросе содержится половина ответа.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Peter, ну сейчас понятно что я хочу? Т.е. любой исходник нужно вписать в рамки конечника, при условии соблюдения пропорции
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
Так а чем не подходит вариант, предложенный vedun?
-------------------- qqq |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
всё.. перегрелся.. всё правильно
Всё работает... вопрос решён -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Коли решен, так ставь "птицу".
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |