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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод изображений в браузер (продолжение)

Сообщения:  [1-10] 

 
 автор: cheops   (29.09.2005 в 19:18)   письмо автору
 
   для: EvgenLog   (29.09.2005 в 16:53)
 

>1) Что-то я не понял, что нужно исправить...
У вас не выводится изображение? Всё правильно блок
     <tr> 
                           <td> 
                        <img src='img.php?file=$source' border='0' alt='$name'> 
                           </td> 
                        </tr> 
                        <tr>

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

   
 
 автор: EvgenLog   (29.09.2005 в 16:53)   письмо автору
 
   для: cheops   (29.09.2005 в 12:15)
 

1) Что-то я не понял, что нужно исправить...
2) С Деневером вообще глюки какие-то...
Вот смотрите код...

<html>
<body>
<table border='1'>
   <tr>
      <td>
         <center>
            Загрузка
         </center>
         <form action='upload.php' method='POST' enctype='multipart/form-data'>
         <table border='1'>
            <tr>
               <td>
                  Укажите файл
               </td>
            </tr>
            <tr>
               <td>
            <input type='file' name='filename'>
               </td>
            </tr>
            <tr>
               <td>
                  Директория
               </td>
            </tr>
            <tr>
               <td>
                  <select name='dir_name'>
                       <?php
                  $main_img_dir
="Gallery";
                     
chdir("./$main_img_dir/");
                     
$handle=opendir(".");
                        while(
$file=readdir($handle)!=false)
                           {
                             if(
is_dir($file))
                              {
                                    echo 
"<option>".$file."</option>";
                              }
                           }
                       
?>
                  </select>
<input type='submit' value='Загрузить'>
</form>
</body>
</html>

В <select> должен быть список с содержащимися в директории "Gallery" папками.... Там пусто... На Linux все работает без проблем... Может и с прошлым скриптом тоже что-то из-за него? Бесит... А в Linux лезти не охото... Или всё-таки придётся... Проблема неустранима?

   
 
 автор: cheops   (29.09.2005 в 12:15)   письмо автору
 
   для: EvgenLog   (29.09.2005 в 10:04)
 

Тогда тэг
<img src='img.php?file=$source' border='0' alt='$name'>

не имеет смысла, ведь img.php не возвращает изображения... функция resizeimg() возвращает только true...

   
 
 автор: EvgenLog   (29.09.2005 в 10:04)   письмо автору
 
   для: cheops   (29.09.2005 в 00:40)
 

Выводится, что нет файла... Так и должно быть, ведь переменная ничего не содержит...
Вот код файла img.php

<?
   
// Здесь можно и нужно добавить код, проверяющий
   // содержимое переменной $_GET["file"]
   // Вдруг вам хакер или просто любопытствующий туда
   // что-нибудь не то передаст
  
$filename $_GET["file"];
  
// Вызываем функцию масштабирования
  
resizeimg($filename130,130);

  
// Функция масштабирования
  
function resizeimg($filename$w$h)
  {
    
// определим коэффициент сжатия изображения, которое будем генерить
    
$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;
    }
    
// создадим пустое изображение по заданным размерам
    
$dest_img imagecreatetruecolor($w$h);
    
$white imagecolorallocate($dest_img255255255);

    if (
$size_img[2]==2)  $src_img imagecreatefromjpeg($filename);
    else if (
$size_img[2]==1$src_img imagecreatefromgif($filename);
    else if (
$size_img[2]==3$src_img imagecreatefrompng($filename);

    
// масштабируем изображение     функцией imagecopyresampled()
    // $dest_img - уменьшенная копия
    // $src_img - исходной изображение
    // $w - ширина уменьшенной копии
    // $h - высота уменьшенной копии
    // $size_img[0] - ширина исходного изображения
    // $size_img[1] - высота исходного изображения
    
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);

    
// Выводим уменьшенную копию в поток вывода
    
if ($size_img[2]==2)  header('Content-type: image/jpg');
    else if (
$size_img[2]==1header('Content-type: image/gif');
    else if (
$size_img[2]==3header('Content-type: image/png');
    
// Выводим уменьшенную копию в поток вывода
    
if ($size_img[2]==2)  imagejpeg($dest_img);
    else if (
$size_img[2]==1imagegif($dest_img);
    else if (
$size_img[2]==3imagepng($dest_img);

    
// чистим память от созданных изображений
    
imagedestroy($dest_img);
    
imagedestroy($src_img);
    return 
true;
  }
?>

А вот часть кода из файла img_resizing.php, которая отвечает за содеражание переменной "$source", а следовательно и за "$filename"...

<?php
$main_img_folder 
"./Files/Gallery/Images/";
$open_main_img_folder opendir($main_img_folder);
$image_extensions = array("jpg""png""bmp""jpe""jpeg");

while(
$images readdir($open_main_img_folder))
{
   
$img_name_array explode("."$images);
   
$img_type end($img_name_array);

   if(
is_file($main_img_folder.$images) && in_array($img_type$image_extensions))
   {
          
$source=$main_img_folder.$images;
...
...
...
//И вот так выводится на экран...
<img src='img.php?file=$source' border='0' alt='$name'>
...
...
...
?>

Повторяю, почему-то все работает, если скрипт лежит в главной директории (www), оттуда до любой папки можно добраться...

   
 
 автор: cheops   (29.09.2005 в 00:40)   письмо автору
 
   для: EvgenLog   (29.09.2005 в 00:18)
 

А функция точно возвращает изображение? Что происходит если взять из HTML-кода img.php?file=$source и подставить в окно браузера - может выводятся какие-то ошибки?

   
 
 автор: EvgenLog   (29.09.2005 в 00:18)   письмо автору
 
   для: cheops   (29.09.2005 в 00:00)
 

img.php - то что масштабирует файлы...
Скрипт работает тоько из дериктории www почему-то...

   
 
 автор: cheops   (29.09.2005 в 00:00)   письмо автору
 
   для: EvgenLog   (28.09.2005 в 19:19)
 

Что такое img.php и какой в нём код?

   
 
 автор: EvgenLog   (28.09.2005 в 19:19)   письмо автору
 
   для: cheops   (27.09.2005 в 23:13)
 

Не работает... Почему-то... Если написать вот так:

<?php
$main_img_folder 
"z:/home/NewServer.ru/www/Files/Gallery/Images/";
$open_main_img_folder opendir($main_img_folder);
//и т.д.
?>

То выводится имя файла, разрешение, а вот сама картинка - нет... Красный крестик...
Вот таким скриптом он должен отображаться в браузере...

<?php
echo "<table align='center' valign='top' border='1'>
                        <tr>
                           <td>
                        <img src='img.php?file=
$source' border='0' alt='$name'>
                           </td>
                        </tr>
                        <tr>
                         <td>
                        <center>
                        <font color='#2954D1'><b>
$size_img[0]x$size_img[1]</b><br>
                        <a href='
$main_url/$main_files_dir/Gallery/Images/$name.jpg'><b>$name</b>
                        </font>
                        </center>
                         </td>
                        </tr>
                        </table>"
;
?>

Но не всё отображается... в чём дело?

   
 
 автор: cheops   (27.09.2005 в 23:13)   письмо автору
 
   для: EvgenLog   (27.09.2005 в 23:11)
 

Нужно ещё на один уровень подняться
<?php 
$main_img_folder 
"../../Gallery/Images/"
$open_main_img_folder opendir($main_img_folder); 
//и т.д. 
?>

   
 
 автор: EvgenLog   (27.09.2005 в 23:11)   письмо автору
 
 

Два файла img.php и resizeimg.php лежат вот здесь:

Z:\home\NewServer.ru\www\Files\Gallery\Image_Processing\img.php
Z:\home\NewServer.ru\www\Files\Gallery\Image_Processing\resizeimg.php

Мне нужно, чтобы масштабировались картинки, которые лежат вот здесь:

Z:\home\NewServer.ru\www\Files\Gallery\Images\

Пишу в файле resizeimg.php:

<?php
$main_img_folder 
"../Gallery/Images/";
$open_main_img_folder opendir($main_img_folder);
//и т.д.
?>


Получаю ошибку:

Warning: opendir(../Gallery/Images/): failed to open dir: Invalid argument in z:\home\newserver.ru\www\Files\Gallery\Image_Processing\resizing.php on line 5

Warning: readdir(): supplied argument is not a valid Directory resource in z:\home\newserver.ru\www\Files\Gallery\Image_Processing\resizing.php on line 8

Что тут не так??? Не понимаю... Подскажите пожалуйста...
Спасибо...

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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