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
Форумы портала PHP.SU :: Версия для печати :: вывод изображений из бд с превью на js
Форумы портала PHP.SU » » Вопросы новичков » вывод изображений из бд с превью на js

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

1. wredyatina - 04 Октября, 2011 - 15:14:41 - перейти к сообщению
Здравствуйте, хочу сделать вывод изображений из бд с превью на 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. Заранее спасибо за помощь.
2. viperdev - 04 Октября, 2011 - 15:26:14 - перейти к сообщению
А что вам мешает добавить 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.  
3. wredyatina - 04 Октября, 2011 - 15:38:16 - перейти к сообщению
Спасибо за ответ!
))))))) я делала так и не получалось.... Я просто забыла скрипты js добавить на сервер... заработалась....))))

Еще один вопрос: А как в этом скрипте оставить размеры big основными, или хотя бы не уменьшались так сильно. Сейчас у меня вывод big всего приблизительно на 10% больше, т.е. около ширина 100 px, хотя размер загружаемого файла ширина 1024px, с высотой также.
4. viperdev - 04 Октября, 2011 - 15:58:34 - перейти к сообщению
wredyatina пишет:
Спасибо за ответ!
))))))) я делала так и не получалось.... Я просто забыла скрипты js добавить на сервер... заработалась....))))

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


Попробуйте подбирать значение для $ratio т.е. $ratio = '5'; пока не получите желаемый результат.
5. wredyatina - 04 Октября, 2011 - 16:41:39 - перейти к сообщению
нет не получается(
6. wredyatina - 04 Октября, 2011 - 21:10:30 - перейти к сообщению
подскажите пож как быть. Не могу ничего поделать изображение big получается очень маленькое...
7. JohnnyB - 06 Октября, 2011 - 08:20:59 - перейти к сообщению
При вызове функции img_resize 3ий и 4ый параметр ширина и высота получаемого изображения.
8. wredyatina - 06 Октября, 2011 - 10:30:11 - перейти к сообщению
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 );
9. JohnnyB - 06 Октября, 2011 - 10:39:48 - перейти к сообщению
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 пикселей, точнее насколько я понял функцию она ограничивает максимальные размеры указанными пределами

 

Powered by ExBB FM 1.0 RC1