Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пропорциональное изменение размера 
V
    Опции темы
Gold Dragon
Дата 18.7.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Не могу логически разобрать как уменьшить картинку пропорционально.. 

Есть исходный размер картинки
- ширина = width_src 
- высота = heigth_scr

нужно уменьшить размер пропорционально, но чтобы
- максимальная ширина = width_desc
- максимальная высота = heigth_desc

При этом если исходные размеры меньше конечных, то  увеличения не должно быть

помогите составить условие ;)

зы
видимо в понедельник никак не могу решить простую задачку


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
vedun
Дата 18.7.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 23.12.2010

Репутация: 2
Всего: 2



Что в вашем понимании максимальная ширина ? Если картинка уменьшается пропорционально и исходная ширина = width_src то результат будет = width_src*k, где k - коэффициент пропорциональности. Честно говоря вопрос не очень понятен.
PM ICQ Skype Jabber   Вверх
Peter
Дата 18.7.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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).
PM MAIL WWW   Вверх
Gold Dragon
Дата 20.7.2011, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(vedun @  18.7.2011,  17:05 Найти цитируемый пост)
Что в вашем понимании максимальная ширина ? 
наверное не очень понятно объяснил. Суть простая - уменьшать картинку до тех пор пока ИЛИ ширина ИЛИ высота не будут равняться максимальному значению.

Добавлено через 6 минут и 58 секунд
Peter, поясни свой пример.. Я пишу на PHP, функции могут иметь разную реализацию


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
vedun
Дата 20.7.2011, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM ICQ Skype Jabber   Вверх
Peter
Дата 20.7.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



Если мы зададим коэффициент пропорциональности равным width_dest / width_src, то ширина прямоугольника как раз будет равна максимальной. Если height_dest / height_src, то высота станет равна максимальной. Но у нас же требование, чтобы ни ширина не превысила максимальную, ни высота, а также чтобы коэффициент увеличения не был больше 1. Значит, из этих трех значений надо выбрать наименьшее, а не то одно из требований будет нарушено.

Добавлено через 1 минуту и 59 секунд
На этот вычисленный коэффициент надо *умножать*.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Gold Dragon
Дата 20.7.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



что-то малость не получается...  Опять же это простое пропорциональное уменьшение.. А если исходник 2000х1000, и нужно уменьшить до width_desc = 100 и  heigth_desc = 200.. т.е. исходник "альбом", а конечник "книга"


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Peter
Дата 21.7.2011, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



Значит, надо задачу более внятно поставить. Как говорится, в правильно поставленном вопросе содержится половина ответа.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Gold Dragon
Дата 21.7.2011, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Peter, ну сейчас понятно что я хочу? Т.е. любой исходник нужно вписать в рамки конечника, при условии соблюдения пропорции




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 21.7.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Так а чем не подходит вариант, предложенный vedun?


--------------------
qqq
PM WWW   Вверх
Gold Dragon
Дата 21.7.2011, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



всё.. перегрелся.. всё правильно smile не на то делил  smile 
Всё работает... вопрос решён



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Peter
Дата 22.7.2011, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



Коли решен, так ставь "птицу".


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Gold Dragon
Дата 22.7.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



user posted image
 smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.