|
|
|
| есть галерея на флаше+XML, которая грузит в себя превьюшки и большие фотки, немного
"приводя" их к нужным размерам (раньше флаш был масштабируемым, а сейчас с жесткими размерами, но функция загрузки осталась старая).
для превьюшек есть место 130*80 для каждой.
задача - вписать фотку в прямоугольник, чтоб ничего не вылезало.
делаю так:
если фотка горизонтальная, делаю ей ширину 130 и высоту пропорционально оригиналу (реальные размеры фотки тоже передаются в XML). но после этого новая высота может все еще быть больше, чем разрешенная (80). поэтому проверяю снова и если новая высота не укладывается в 80, делаю ее насильно 80, меняя при этом и ширину, она будет меньше 130, но это не страшно, главное, чтоб не больше.
но флаш (противный) почему-то это второе преобразование (корректировку) делает кое-как.
например, фотка 562*750 по идее должна была стать 562*80/750~ 60 (округлено), т.е. 60*80, но делается она 105*80. другая, горизонтальная, 1426*670, которая должна стать 670*130/1426~ 60 (округлено), 130*60, становится 110*80 с явными признаками деформации (как будто маленькую фотку сильно увеличили).
на странице выбора проектов тоже есть превьюшки (200*140) и там точно такой же скрипт вычисления ширины и высоты фотографий. и там все работает как надо! горизонтальные фотки все одной ширины - 200, а вертикальные одной высоты - 140.
глянуть можно здесь: http://diedron.02.icop-demo.gr/gallery/?/5/2 - в первом проекте первая фотка сначала в нормальных пропорциях, а на второй странице (переход по клику) справа уже искажена. во втором проекте фотка сильно вытянута по горизонтали, но на первой странице она показывается как есть, а на второй - сжата.
хотя если в проекте фотки одного типа (только вертикальные или только горизонтальные), то первая из них показывается правильно (Hotels, Shops).
ничего не понимаю... | |
|
|
|
|
|
|
|
для: elenaki
(09.12.2011 в 21:10)
| | >562*80/750~ 60 (округлено), т.е. 60*80, но делается она 105*80.
У меня как раз получилось 106, почти 105, вот так
80 562 80 * 750
--- = --- ==> x = -------- = 106
x 750 562
|
Правильно ли я понимаю, что в 562*750 число 562 - это ширина, которая на самом деле должна соответствовать числу 130? | |
|
|
|
|
|
|
|
для: cheops
(09.12.2011 в 22:39)
| | но ведь, когда высота больше ширины, отталкиваться надо от нее, т.е. сначала принять высоту за 80, а потом высчитывать новую ширину?
562*80/750 и получается примерно 60
я подумаю об этом завтра :) | |
|
|
|
|
|
|
|
для: elenaki
(09.12.2011 в 23:10)
| | фигня какая-то. после сотой попытки переписать функцию по-другому и очередного облома, все заработало как надо со старым кодом. я в шоке. этот шаблон может заказать и другой заказчик, у него будут другие фотки, опять все придется переделывать? "мой голова не мочь этого понимайт" (R) | |
|
|
|
|
|
|
|
для: elenaki
(09.12.2011 в 21:10)
| | это же в цикле происходит? проверьте, сбрасываются ли посчитанные коэффициенты перед каждой итерацией.
Недавно на пхп с такой ошибкой столкнулся, долго искал...
если шли горизонтальные, потом вертикальные - все ок.
а если вертикальная в середине стояла - коверкалась жутко. а всего-то нужно было сбрасывать коэффициенты. | |
|
|
|
|
|
|
|
для: AlexSol
(13.12.2011 в 12:33)
| | всегда обнуляю :)
================================================================
— Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины?
Думаете — одно? Фигушки! Это может в первом классе на уроке арифметики оно одно осталось. А ежели задать эту задачку программистам... Ответы могут быть совершенно неожиданными:
— Неизвестно сколько. Никто-ж не знает, сколько яблок было у него до этого.
Мораль: обнуляйте начальные переменные.
— Даже если обнулить переменные, никто не гарантирует, что Мальвина не отдала ему свои яблоки, пока он уничтожал те два. Или не сожрала третье.
Мораль: не используйте глобальные переменные.
— А где гарантия, что Буратино съел именно два яблока, а не два чего-то другого? Там написано что он съел два.
— Количество яблок у Буратины не изменилось. Они только поменяли область видимости: часть из них переместилась внутрь Буратины.
================================================================ | |
|
|
|