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

Форум PHP

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

 

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

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

тема: динамически данные в width и height из функции уменьшения картинки
 
 автор: ronin   (18.08.2008 в 12:27)   письмо автору
 
 

Здравствуйте!
использую lightbox, но у него есть маленькое условие нормальной работы - у превьюшки должны быть указаны width и height, но так как использую базу данных превьюшки динамически изменяються в файле уменьшения картинок(imgresize.php).
за нужные мне размеры в файле уменьшения картинок отвечают переменные $w и $h в функции resizeimg.
Вопрос: как мне эти переменные использовать на странице вывода картинок? Так как сейчас скрипт их "не видит" несмотря на подключения к странице файла уменьшения картинок.
привожу вывод картинок:

<a href='".$pa['img']."' rel=lightbox[example] class=bordered />  <img src=\"imgresize.php?img=".$pa['img']."\" width=".$w." height=".$h." alt=\"".$pa["img_description"]."\" ></a>

  Ответить  
 
 автор: Trianon   (18.08.2008 в 12:34)   письмо автору
 
   для: ronin   (18.08.2008 в 12:27)
 

В этом коде нет ни $w ни $h.
То, что они есть в какой-то функции (вызванной к тому же при обработке другого http-запроса), в общем случае ни к чему php не обязывает.

  Ответить  
 
 автор: ronin   (18.08.2008 в 12:50)   письмо автору
 
   для: Trianon   (18.08.2008 в 12:34)
 

я согласен и не жалуюсь на php:)
все дело в том, что сама превьюшка создаеться! просто эти переменные($w $h.) мне нужно перекинуть в width=".$w." height=".$h." также как перкидывается без проблем картинка (<img src=\"imgresize.php?img=".$pa['img']."\")
код в (imgresize.php):

imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]); 

  Ответить  
 
 автор: sim5   (18.08.2008 в 12:54)   письмо автору
 
   для: ronin   (18.08.2008 в 12:50)
 

Только не надо выдумывать, что Lightbox требует от вас размеров изображений, которые он будет выводить как эффекты. И не надо ничего перекидывать, в скрипте изменения размеров все можно узнать.

  Ответить  
 
 автор: ronin   (18.08.2008 в 13:03)   письмо автору
 
   для: sim5   (18.08.2008 в 12:54)
 

я потому прошу помощи, что не могу перекинуть данные. А на счет lightbox, может я что не так делаю, но у меня если не указать width и height превьюшки, скрипт то работает - то нет.

  Ответить  
 
 автор: sim5   (18.08.2008 в 13:20)   письмо автору
 
   для: ronin   (18.08.2008 в 13:03)
 

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

  Ответить  
 
 автор: ronin   (18.08.2008 в 13:29)   письмо автору
 
   для: sim5   (18.08.2008 в 13:20)
 

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

  Ответить  
 
 автор: sim5   (18.08.2008 в 13:40)   письмо автору
 
   для: ronin   (18.08.2008 в 13:29)
 

Да запросто. Присылайте мне мылом 500 баксов и размеры всех своих картинок, я их на калькуляторе быстренько пересчитаю и вышлю вам :) Ну что смеяться. Вы в школе арифметику проходили? У вас же есть код ресайза изображений, а в нем есть строки, которые из оригинальных размеров делаю малые, фиксированные по ширине или высоте, в процетах ли указано, не важно, есть ведь. Вот этот же код и используйте перед выводом тега изображения на страницу, и вы получите и $w, и $h вам нужные.

  Ответить  
 
 автор: ronin   (18.08.2008 в 14:16)   письмо автору
 
   для: sim5   (18.08.2008 в 13:40)
 

да что-то не получается, я пошел другим путем как в теме:

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145

  Ответить  
 
 автор: sim5   (18.08.2008 в 14:26)   письмо автору
 
   для: ronin   (18.08.2008 в 14:16)
 

А что может не получиться? Вот строки кода из этой темы, ответственные за новый размер:
<?
$ratio 
$w/$h
// получим размеры исходного изображения 
$size_img getimagesize($filename); 
// Если размеры меньше, то масштабирования не нужно 
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true
// получим коэффициент сжатия исходного изображения 
$src_ratio=$size_img[0]/$size_img[1]; 
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились  
// пропорции исходного изображения 
if ($ratio<$src_ratio) { 
  
$h $w/$src_ratio
} else { 
  
$w $h*$src_ratio
}

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

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

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