Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Flash

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: flash неправильно резайзит загруженные фотки
 
 автор: elenaki   (09.12.2011 в 21:10)   письмо автору
 
 

есть галерея на флаше+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).

ничего не понимаю...

  Ответить  
 
 автор: cheops   (09.12.2011 в 22:39)   письмо автору
 
   для: 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?

  Ответить  
 
 автор: elenaki   (09.12.2011 в 23:10)   письмо автору
 
   для: cheops   (09.12.2011 в 22:39)
 

но ведь, когда высота больше ширины, отталкиваться надо от нее, т.е. сначала принять высоту за 80, а потом высчитывать новую ширину?
562*80/750 и получается примерно 60

я подумаю об этом завтра :)

  Ответить  
 
 автор: elenaki   (13.12.2011 в 11:34)   письмо автору
 
   для: elenaki   (09.12.2011 в 23:10)
 

фигня какая-то. после сотой попытки переписать функцию по-другому и очередного облома, все заработало как надо со старым кодом. я в шоке. этот шаблон может заказать и другой заказчик, у него будут другие фотки, опять все придется переделывать? "мой голова не мочь этого понимайт" (R)

  Ответить  
 
 автор: AlexSol   (13.12.2011 в 12:33)   письмо автору
 
   для: elenaki   (09.12.2011 в 21:10)
 

это же в цикле происходит? проверьте, сбрасываются ли посчитанные коэффициенты перед каждой итерацией.

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

  Ответить  
 
 автор: elenaki   (13.12.2011 в 16:52)   письмо автору
 
   для: AlexSol   (13.12.2011 в 12:33)
 

всегда обнуляю :)
================================================================
— Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины?

Думаете — одно? Фигушки! Это может в первом классе на уроке арифметики оно одно осталось. А ежели задать эту задачку программистам... Ответы могут быть совершенно неожиданными:

— Неизвестно сколько. Никто-ж не знает, сколько яблок было у него до этого.
Мораль: обнуляйте начальные переменные.

— Даже если обнулить переменные, никто не гарантирует, что Мальвина не отдала ему свои яблоки, пока он уничтожал те два. Или не сожрала третье.
Мораль: не используйте глобальные переменные.

— А где гарантия, что Буратино съел именно два яблока, а не два чего-то другого? Там написано что он съел два.

— Количество яблок у Буратины не изменилось. Они только поменяли область видимости: часть из них переместилась внутрь Буратины.
================================================================

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования