Вывод всех изображений из папки

G1
На сайте с 05.03.2011
Offline
11
6237

Здравствуйте, ни как не могу вывести все изображения из заданной папки..((

Скрипт сканирует папку на наличие файлов, и должен их выводить...

но он этого не делает....

если же использовать скрипт без функции - то изображения выводятся, если использовать только функцию и указывать название файла, то он тоже отображается. а вот если соединить все вместе, то ничего не получается...(((( в чем может быть проблема??

<?PHP

header('Content-type: image/jpeg');
function imageresize($outfile,$infile,$percents,$quality) {
$im=imagecreatefromjpeg($infile);
$w=imagesx($im)*$percents/200;
$h=imagesy($im)*$percents/200;
$im1=imagecreatetruecolor($w,$h);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}

$path=GetCWD()."/uploads";
$dir = opendir($path);
if((readdir($dir))!== false) {
foreach (scandir('uploads/') as $v)
{
if ($v == '.' || $v == '..') continue;
$file=imageresize("","$v",30,75);
echo "<img src='uploads/".$file."'/><br />";

}
closedir($dir);
}
?>
siv1987
На сайте с 02.04.2009
Offline
427
#1

не хвотает ресурсов на обработку всех изображений, к примеру.

и как вы выводите текст - echo "<img src='uploads/".$file."'/><br />"; если в заголовках отдаете что это изображение - header('Content-type: image/jpeg');

А это функция что-то должна возвращать? не вижу где у нее return

G1
На сайте с 05.03.2011
Offline
11
#2

если я уберу строчку header('Content-type: image/jpeg');

то будет куча при куча ошибок

через print тоже не работает....

функция должна уменьшать каждую найденную картинку

siv1987
На сайте с 02.04.2009
Offline
427
#3
GEN_18:
функция должна уменьшать каждую найденную картинку

И каждый раз будете обрабатывать картинку при запуске скрипта?

И вы присваиваете переменной результат функции $file=imageresize("","$v",30,75); где возвращается этот результат, где return? поставьте тогда в конец функции return $outfile;

GEN_18:
если я уберу строчку header('Content-type: image/jpeg');
то будет куча при куча ошибок

Удивительно что сейчас они не сыпятся.

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#4

Больше глупого кода я не видел. ТС вы вообще врубаетесь в логику то а? :)

Чего вы хотите уменьшать? Зачем?

Вот код:

$path=GetCWD()."/uploads";

$dir = opendir($path);

if((readdir($dir))!== false) {

foreach (scandir('uploads/') as $v)

{

if ($v == '.' || $v == '..') continue;

echo "<img width="30" height="75" src='uploads/".$file."'/><br />";

}

closedir($dir);

}

---------- Добавлено 19.04.2012 в 17:25 ----------

siv1987, да не нужно там ничего делать. Вы сами то почитайте что нужно. Он вместо того чтобы в HTML уменьшить размер, пытается это сделать через функции PHP при этом не понимая логику работы.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
G1
На сайте с 05.03.2011
Offline
11
#5

это был мой первый вариант кода, который работал, но не так, как надо....

LEOnidUKG:

Чего вы хотите уменьшать? Зачем?
Вот код:
$path=GetCWD()."/uploads";
$dir = opendir($path);
if((readdir($dir))!== false) {
foreach (scandir('uploads/') as $v)
{
if ($v == '.' || $v == '..') continue;
echo "<img width="30" height="75" src='uploads/".$file."'/><br />";
}
closedir($dir);
}

Но для чего уменьшать? а для того, что загружаемые картинки очень большого размера(3000*2500), и они то горизонтальные, то вертикальные. и под размер (30*75) они естественно будут искажаться при выводе. и по этому никак не угадать с размером выходного изображения, чтоб оно корректно отображалось, остается только пропорциональное уменьшение в N раз.

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#6

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

А вообще можете просто узнавать высоту и ширину картинки. Если она широкая, то width="75", если же высокая, то height="75"

DiAksID
На сайте с 02.08.2008
Offline
236
#7

стандартные библиотеки обработки изображений сделают любой scale одной функцией, хотя в вашем случае LEOnidUKG прав: надо всего лишь определить "портертная" картинка или "альбомная", а это опять же пара строк кода, но уже безо всяких библиотек.

show must go on !!!...
G1
На сайте с 05.03.2011
Offline
11
#8

я создал файл resize.php

который прогонят через себя фотографии

<?php
header('Content-type: image/jpeg');
$fileName=$_GET['file'];
function imageresize($outfile,$infile,$percents,$quality) {
$im=imagecreatefromjpeg($infile);
$w=imagesx($im)*$percents/200;
$h=imagesy($im)*$percents/200;
$im1=imagecreatetruecolor($w,$h);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}

imageresize("","$fileName",30,75);
?>

а в index.php прописал вывод этих изображений

<?php
$path=GetCWD()."/uploads";
$dir = opendir($path);
if((readdir($dir))!== false) {
foreach (scandir('uploads/') as $v)
{
if ($v == '.' || $v == '..') continue;
echo "<img src='resize.php?file=".$path."/".$v."'/><br />";

}
closedir($dir);
}
?>

теперь возникла еще одна проблема....скрипт долго обрабатывается, если фотографии большого размера....

и как можно сделать, чтоб конечное изображение не превышало размера 600х600 ???

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#9

Ну тоже самое, что я и говорил, только вы нагружаете сервер.

как можно сделать, чтоб конечное изображение не превышало размера 600х600 ???

Руками. Узнаёте размер изображения, если больше то уменьшаете, если меньше ничего не делаете и отдаёте исходник.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий