|
|
|
| Здравствуйте! только не говорите, чтобы я пользовался поиском, потому, что я уже итак им часа 2 пользовался...
Вобщем проблема вот в чём:
Насколько я понимаю, вот этот скрипт должен выводить все картинки, которые есть в директории:
<?
$config_path_image_upload = "./Pictures/";
$img_dir = opendir($config_path_image_upload);
while ($file = readdir($img_dir))
{
$images_in_dir[] = $file;
}
foreach ($images_in_dir as $file) {
echo"<img src='$config_path_image_upload$file' border=0 width=100 WIDTH=100>";
}
?>
|
...
А он почему-то выводит только картинки с разрешением 1024x768...
В чём дело-то???
Кстате, я все тесты проыожу на Windows, используя Деневер или как его там... Может из-зи этого?
Спасибо... | |
|
|
|
|
|
|
|
для: EvgenLog
(25.09.2005 в 02:34)
| | Это весь скрипт? Здесь нет ограничений на вывод файлов определенного разрешения.
А может быть у вас в директории все файлы размером 1024x768?
Если нет, то какого они размера и какой тип файлов (jpg, gif, png) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(25.09.2005 в 06:59)
| | Файлы лежат 1024х768 и 800х600. Все jpg... Но нужно чтобы и gif'ы выводил и с любым разрешением... Которые 1024х768 показывает в размере 100х100, а 800х600 - квадратик с красным крестиком...
Кстате, скачивал Wallist у вас... Там то же самое 1024х768 выводит, а 800х600 нет... | |
|
|
|
|
|
|
|
для: EvgenLog
(25.09.2005 в 11:15)
| | А как файлы называются? Если скачать изображения обратно на локальную машину - они нормально отображаются? Приводит ли к чему изменение строки
<?php
echo"<img src='$config_path_image_upload$file' border=0 width=100 WIDTH=100>";
?>
|
на
<?php
echo "<img src='".$config_path_image_upload.$file."' border=0 width=100 WIDTH=100>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(25.09.2005 в 13:30)
| | Файлы итак лежат на локальной машине... Изменение ни к чему не приводит...
Я понял! Он не выводит файлы с русскими именами... Почему? Как это устранить если можно?
Вот полный скрипт... Списал с одной из тем...
<?
$config_path_image_upload = "./Pictures/";
$allowed_extensions = array("gif", "jpg", "png", "bmp", "jpe", "jpeg");
// ********************************************************************************
// Show Images List
// ********************************************************************************
$img_dir = opendir($config_path_image_upload);
while ($file = readdir($img_dir))
{
$images_in_dir[] = $file;
}
natcasesort($images_in_dir);
reset($images_in_dir);
foreach ($images_in_dir as $file) {
$img_name_arr = explode(".",$file);
$img_type = end($img_name_arr);
if ( (in_array($img_type, $allowed_extensions) or
in_array(strtolower($img_type), $allowed_extensions)) and
$file != ".." and $file != "." and is_file($config_path_image_upload."/".$file))
{
echo "<img src='".$config_path_image_upload.$file."' border=0 width=100 WIDTH=100>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: EvgenLog
(25.09.2005 в 17:57)
| | Англоязычный Апач никогда не умел и не научится работать с русскими именами файлов. И это даже к лучшему, ибо наводит эстетический порядок. Выходы - при аплоаде картинок на сервер либо изначально не задавать им русские имена, либо скриптом транслитить имена. | |
|
|
|
|
|
|
|
для: DDK
(25.09.2005 в 19:04)
| | Ну всё... С одним разобрался... Возникают, как обычно дальнейшие проблемы...
Вот полный код (пока) скрипта...
<?
$folder = "./Pictures";//Каталог в котором находятся галереи
$p = $folder;
$main_image_dir = "./Pictures/";
$allowed_image_extensions = array("gif", "jpg", "png", "bmp", "jpe", "jpeg");
$open_main_img_dir = opendir($main_image_dir);
while ($file = readdir($open_main_img_dir))
{
$images_in_dir[] = $file;
}
natcasesort($images_in_dir);
reset($images_in_dir);
foreach ($images_in_dir as $file)
{
$img_name_arr = explode(".",$file);
$img_type = end($img_name_arr);
if ( (in_array($img_type, $allowed_image_extensions) or
in_array(strtolower($img_type), $allowed_image_extensions)) and
$file != ".." and $file != "." and
is_file($main_image_dir."/".$file))
{
$size_img = getimagesize($p."/".$file);
$name = basename ($file,".jpg");
echo "<img src='".$main_image_dir.$file."'
border=2 width=200 WIDTH=100
alt=$name><br>$name<br>$size_img<br>";
}
}
?>
|
Он выводит и катинки и имена этих картинок, а вот с размерами почему-то проблема... пишет под каждой картинкой "Array"... Что тут не так? Спасибо... | |
|
|
|
|
|
|
|
для: EvgenLog
(25.09.2005 в 21:41)
| | Это связано с тем, что функция getimagesize() возвращает массив http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5325. Нулевой элемент - ширина в пикселах, а первый - высота, вам какой размер нужен? Может более подойдёт функция filesize, которая возвращает размер файла в байтах? | |
|
|
|
|
|
|
|
для: cheops
(25.09.2005 в 22:01)
| | Мне как рз надо разрешение... Разобрался уже... А можете объяснить каким образом выводить изображения на страницу... Например 3 по горизонтали и 2 по вертикали?
В файлах Wallist всё досточно замудрёно написано... Для меня... По крайней мере...
Спаибо... | |
|
|
|
|
|
|
|
для: EvgenLog
(25.09.2005 в 22:36)
| | Что-то я намдрил со скриптом... Думал он будет выводить все картинки из папки с разрешением 100х100, а он выводит подряд одну и ту же... Причём последнюю в папке...??? Что тут не так?
<?
$main_img_folder = "./Pictures/";
$open_main_img_folder = opendir($main_img_folder);
$image_extensions = array("gif", "jpg", "png", "bmp", "jpe", "jpeg");
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}
// исходя из того какой тип имеет изображение
// выбираем функцию создания
switch ($size_img['mime'])
{
// если тип файла JPEG
case 'image/jpeg':
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
$ext="jpg";
break;
// если тип файла GIF
case 'image/gif':
// создаем gif из файла
$src_img = imagecreatefromgif($filename);
$ext="gif";
break;
}
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0],
$size_img[1]);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, "small.$ext");
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "small.$ext");
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
while($images = readdir($open_main_img_folder))
{
$img_in_dir[] = $images;
}
foreach($img_in_dir as $images)
{
$img_name_array = explode(".", $images);
$img_type = end($img_name_array);
if(is_file($main_img_folder.$images) &&
in_array($img_type, $image_extensions))
{
$img_size = getimagesize($main_img_folder."/".
$images);
$img_name = basename($images);
// Создадим уменьшенную копию изображения
// имя файла с которым будем работать
// файл должен находиться в том же месте, что и этот скрипт
$source=$main_img_folder.$images;
// определим размеры уменьшенного изображения
$d_w=133;
$d_h=100;
// вызываем функцию изменения размера
resizeimg($source, 133, 100);
// выводим картинку на экран
echo "<img src='small.jpg'>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: EvgenLog
(26.09.2005 в 00:17)
| | Вы в цикле проходите по всем файлам и создаете уменьшенную копию, с одним и тем же именем - small для всех файлов. Т.е. постоянно перезаписываете результаты работы скрипта. А когда страница отображается, то, естественно, отображается только последний смасштабированный файл.
Вам не нужно сохранять смаштабированную картинку в файл. Можно масштабировать "на лету" без сохранения результатов. Посмотрите код ниже.
<?
$main_img_folder = "../site/images2/";
$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))
{
$img_size = getimagesize($main_img_folder."/".$images);
$img_name = basename($images);
$source=$main_img_folder.$images;
// выводим картинку на экран
echo "<img src='img.php?file=$source' border='0' alt=''>";
}
}
?>
|
Файл img.php, осуществляющий масштабирование должен находится рядом.
<?
// Здесь можно и нужно добавить код, проверяющий
// содержимое переменной $_GET["file"]
// Вдруг вам хакер или просто любопытствующий туда
// что-нибудь не то передаст
$filename = $_GET["file"];
// Вызываем функцию масштабирования
resizeimg($filename, 100,100);
// Функция масштабирования
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_img, 255, 255, 255);
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_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// Выводим уменьшенную копию в поток вывода
if ($size_img[2]==2) header('Content-type: image/jpg');
else if ($size_img[2]==1) header('Content-type: image/gif');
else if ($size_img[2]==3) header('Content-type: image/png');
// Выводим уменьшенную копию в поток вывода
if ($size_img[2]==2) imagejpeg($dest_img);
else if ($size_img[2]==1) imagegif($dest_img);
else if ($size_img[2]==3) imagepng($dest_img);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(26.09.2005 в 06:25)
| | Спасибо огромное! Теперь разобрался... Я кстате пробовал так делать... Ну не совсем так, но что-то похожее... Что бы скрипт получал имена файлов все подряд... Но что-то не получалось... Теперь буду разбираться с постраничной навигацией... Кстате, я вроде бы ни в одной из тем не видел, как это в принципе работает.. Т.е сохраняются файлы в массив или ещё куда... И вообще как они по страницам распределяются... Там только скрипты и объяснения к операциям... Может просто просмотрел, но в любом случае, хотелось бы узнать.
И ещё... Пытаюсь вывести картинки в ряд... Но получается в столбик...
<?
echo "<table border='0'>
<tr>
<td>
<img src='img.php?file=$source' border='0' alt='$name'>
</td>
</tr>
<tr>
<td>
<center>
$size_img[0]x$size_img[1]<br>$name
</center>
</td>
</tr>
</table>";
?>
|
Спаибо... | |
|
|
|
|
|
|
|
для: EvgenLog
(26.09.2005 в 21:40)
| | Жду ответа... Или его не будет? Тогда где найти ответ на этот вопрос? Он есть на форуме? | |
|
|
|
|