Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вывод изображений из бд с превью на js

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
wredyatina
Отправлено: 04 Октября, 2011 - 15:14:41
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


Помог: 0 раз(а)




Здравствуйте, хочу сделать вывод изображений из бд с превью на JS, точнее у меня есть все скрипты переделать не получается...

Вот данные:
таблица sql
PHP:
скопировать код в буфер обмена
  1. mysql_query("CREATE TABLE `image` (
  2. `id` int(20) NOT NULL auto_increment,
  3. `title` text NULL,
  4. `date` DATE NOT NULL,
  5. `img_big` longblob NULL,
  6. `img_small` blob NULL,
  7. `mimetype` varchar(16) NULL,
  8. PRIMARY KEY  (`id`)
  9. )") or die (mysql_error());

файл обработки изображения при добавлении в бд:
PHP:
скопировать код в буфер обмена
  1. /***********************************************************************************
  2. Функция img_resize(): генерация thumbnails
  3. Параметры:
  4.   $src             - имя исходного файла
  5.   $dest            - имя генерируемого файла
  6.   $width, $height  - ширина и высота генерируемого изображения, в пикселях
  7. Необязательные параметры:
  8.   $rgb             - цвет фона, по умолчанию - белый
  9.   $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)
  10. ***********************************************************************************/
  11.   function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
  12. {
  13.   if (!file_exists($src)) return false;
  14.  
  15.   $size = getimagesize($src);
  16.  
  17.   if ($size === false) return false;
  18.  
  19.   // Определяем исходный формат по MIME-информации, предоставленной
  20.   // функцией getimagesize, и выбираем соответствующую формату
  21.   // imagecreatefrom-функцию.
  22.   $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  23.   $icfunc = "imagecreatefrom" . $format;
  24.   if (!function_exists($icfunc)) return false;
  25.  
  26.   $x_ratio = $width / $size[0];
  27.   $y_ratio = $height / $size[1];
  28.  
  29.   $ratio       = min($x_ratio, $y_ratio);
  30.   $use_x_ratio = ($x_ratio == $ratio);
  31.  
  32.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  33.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  34.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  35.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  36.  
  37.   $isrc = $icfunc($src);
  38.   $idest = imagecreatetruecolor($width, $height);
  39.  
  40.   imagefill($idest, 0, 0, $rgb);
  41.   imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,  
  42.     $new_width, $new_height, $size[0], $size[1]);
  43.  
  44.   imagejpeg($idest, $dest, $quality);
  45.  
  46.   imagedestroy($isrc);
  47.   imagedestroy($idest);
  48.  
  49.   return true;
  50.  
  51.  
  52. }


файл обработки запроса при выводе изображений
PHP:
скопировать код в буфер обмена
  1. $size = 'big';
  2. if ( isset( $_GET['size'] ) and $_GET['size'] == 'small' ) $size = 'small';
  3.  
  4. if ( isset( $_GET['id'] ) ) {
  5.   // Здесь $id номер изображения
  6.   $id = (int)$_GET['id'];
  7.   if ( $id > 0 ) {
  8.     $query = "SELECT `img_".$size."`, `mimetype` FROM image WHERE `id`=".$id;
  9.     // Выполняем запрос и получаем файл
  10.     $res = mysql_query($query);
  11.     if ( mysql_num_rows( $res ) == 1 ) {
  12.       $image = mysql_fetch_array($res);
  13.       // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
  14.       if ( $size == 'big' )
  15.         header('Content-type: '.$image['mimetype']);
  16.       else
  17.         header('Content-type: image/jpeg');    
  18.       // И  передаем сам файл
  19.       echo $image['img_'.$size];
  20.     }
  21.   }
  22. }


1. вывод этого скрипта:

CODE (html):
скопировать код в буфер обмена
  1. <a href="image.php?size=big&id=<?=$row['id']?>" target="_blank">
  2. <img src="image.php?size=small&id=<?=$row['id']?>" alt="<?=$title?>" border="0" /></a>
  3.  

2. а вывод с помощью JS:
CODE (html):
скопировать код в буфер обмена
  1. <a href="pictures/big.jpg" rel="lightbox[roadtrip]" ><img src="pictures/small.jpg" width="60" height="50"/></a>
  2.  

Вот не получается у меня вместо пути вывода 1, сделать путь вывода 2. Заранее спасибо за помощь.


-----
Я только учусь...
 
 Top
viperdev
Отправлено: 04 Октября, 2011 - 15:26:14
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




А что вам мешает добавить rel="lightbox[roadtrip]" к ссылке? вместо "roadtrip" можете написать что нибудь свое.
CODE (html):
скопировать код в буфер обмена
  1. <a href="image.php?size=big&id=<?=$row['id']?>" target="_blank" rel="lightbox[mygallery]">
  2. <img src="image.php?size=small&id=<?=$row['id']?>" alt="<?=$title?>" border="0" /></a>
  3.  

(Отредактировано автором: 04 Октября, 2011 - 15:26:53)

 
 Top
wredyatina
Отправлено: 04 Октября, 2011 - 15:38:16
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


Помог: 0 раз(а)




Спасибо за ответ!
))))))) я делала так и не получалось.... Я просто забыла скрипты js добавить на сервер... заработалась....))))

Еще один вопрос: А как в этом скрипте оставить размеры big основными, или хотя бы не уменьшались так сильно. Сейчас у меня вывод big всего приблизительно на 10% больше, т.е. около ширина 100 px, хотя размер загружаемого файла ширина 1024px, с высотой также.

(Отредактировано автором: 04 Октября, 2011 - 15:38:49)



-----
Я только учусь...
 
 Top
viperdev
Отправлено: 04 Октября, 2011 - 15:58:34
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




wredyatina пишет:
Спасибо за ответ!
))))))) я делала так и не получалось.... Я просто забыла скрипты js добавить на сервер... заработалась....))))

Еще один вопрос: А как в этом скрипте оставить размеры big основными, или хотя бы не уменьшались так сильно. Сейчас у меня вывод big всего приблизительно на 10% больше, т.е. около ширина 100 px, хотя размер загружаемого файла ширина 1024px, с высотой также.


Попробуйте подбирать значение для $ratio т.е. $ratio = '5'; пока не получите желаемый результат.
 
 Top
wredyatina
Отправлено: 04 Октября, 2011 - 16:41:39
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


Помог: 0 раз(а)




нет не получается(


-----
Я только учусь...
 
 Top
wredyatina
Отправлено: 04 Октября, 2011 - 21:10:30
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


Помог: 0 раз(а)




подскажите пож как быть. Не могу ничего поделать изображение big получается очень маленькое...


-----
Я только учусь...
 
 Top
JohnnyB
Отправлено: 06 Октября, 2011 - 08:20:59
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011  


Помог: 2 раз(а)




При вызове функции img_resize 3ий и 4ый параметр ширина и высота получаемого изображения.
 
 Top
wredyatina
Отправлено: 06 Октября, 2011 - 10:30:11
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. if( !empty( $_FILES['image']['name'] ) ) {
  2.     // Проверяем, что при загрузке не произошло ошибок
  3.     if ( $_FILES['image']['error'] == 0 ) {
  4.       // Если файл загружен успешно, то проверяем - графический ли он
  5.       if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
  6.         // Создаем превьюшку
  7.         img_resize($_FILES['image']['tmp_name'], $_FILES['image']['tmp_name'].'_small', 100, 100);
  8.         // Читаем содержимое исходного файла
  9.         $img_big = file_get_contents( $_FILES['image']['tmp_name'] );
  10.         // Экранируем специальные символы в содержимом исходного файла
  11.         $img_big = mysql_escape_string( $img_big );
  12.         // Читаем содержимое файла превьюшки
  13.         $img_small = file_get_contents( $_FILES['image']['tmp_name'].'_small' );
  14.         // Экранируем специальные символы в содержимом файла превьюшки
  15.         $img_small = mysql_escape_string( $img_small );


-----
Я только учусь...
 
 Top
JohnnyB
Отправлено: 06 Октября, 2011 - 10:39:48
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011  


Помог: 2 раз(а)




wredyatina пишет:
PHP:
скопировать код в буфер обмена
  1. img_resize($_FILES['image']['tmp_name'], $_FILES['image']['tmp_name'].'_small', 100, 100);

сделай
PHP:
скопировать код в буфер обмена
  1. img_resize($_FILES['image']['tmp_name'], $_FILES['image']['tmp_name'].'_small', 200, 200);
и будет у тебя картинка 200 на 200 пикселей, точнее насколько я понял функцию она ограничивает максимальные размеры указанными пределами
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB