|
|
|
| Нужен скрипт.
Цель сайта - это обои дувушек.
Скрипт сканирует папку, проводит ссылки и режит демо картинки.
Все настраиваеться, все на русском.
Скажите название или пришлите в форум плиз! | |
|
|
|
|
|
|
|
для: YAN
(10.07.2006 в 14:36)
| | это называется превьюшки. русского там ничего нет, ваше право - дописать. скрипт читает
папку и выводит все картинки , уменьшая их пропорционально до заданных размеров (90px)
<?
// Some configuration variables !
$maxWidth = 90;
$maxHeight = 90;
$maxCols = 3;
$webDir = "http://localhost/PHP/test/image_resize/";
$localDir = "C:\\www\\home\\PHP\\test\\image_resize\\";
$AutorisedImageType = array ("jpg", "jpeg", "gif", "png");
?>
<center>
<table border='1' cellspacing='5' cellpadding='5' style="border-collapse:collapse; border-style: dotted">
<tr>
<?
// Open localDir
$dh = opendir($localDir);
while (false !== ($filename = readdir($dh))) {
$filesArray[] = $filename;
}
// Display and resize
foreach ($filesArray as $images) {
$ext = substr($images, strpos($images, ".")+1, strlen($images));
if( in_array($ext, $AutorisedImageType) ) {
list($width, $height, $type, $attr) = @getimagesize( $localDir.$images );
$xRatio = $maxWidth / $width;
$yRatio = $maxHeight / $height;
if ( ($width <= $maxWidth) && ($height <= $maxHeight) ) {
$newWidth = $width;
$newHeight = $height;
}
else if (($xRatio * $height) < $maxHeight) {
$newHeight = ceil($xRatio * $height);
$newWidth = $maxWidth;
}
else {
$newWidth = ceil($yRatio * $width);
$newHeight = $maxHeight;
}
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0;
}
echo "<td align='center' valign='middle' width='$maxWidth' height='$maxHeight'><img src='".$webDir.$images."' width='$newWidth' height='$newHeight'></td>";
$i++;
}
}
?>
</tr>
</table>
</center>
|
| |
|
|
|
|
|
|
|
для: YAN
(10.07.2006 в 14:36)
| | Вместо использования в указанном скрипте создания превьюшек, рекомендую воспользоваться функцией из темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145&page=1. Ниже идёт подправленный предложенный скрипт, затем подправленная функция из вышеуказанной ссылки.
<?
// Some configuration variables !
include('imgresize.php'); // подключаем функцию
$maxWidth = 90;
$maxHeight = 90;
$maxCols = 5;
$i = 0;
$bigDir = 'image/'; // Каталог с изображениями
$smallDir = "image/small/"; // Каталог для помещения уменьшенных превьюшек
$AutorisedImageType = array ("jpg", "jpeg", "gif", "png");
?>
<center>
<table border='1' cellspacing='5' cellpadding='5' style="border-collapse:collapse; border-style: dotted">
<tr>
<?
// Open bigDir
$dh = opendir($bigDir);
while (false !== ($filename = readdir($dh))) {
$filesArray[] = $filename;
}
// Display and resize
foreach ($filesArray as $images) {
$ext = strtolower(substr($images, strpos($images, ".")+1, strlen($images)));
if( in_array($ext, $AutorisedImageType) ) {
$image_name=strtolower($images);
$filename=$bigDir.$image_name;
resizeimg($bigDir.$images, $smallDir.$image_name, 90, 90);
if (file_exists($smallDir.$images)) {
$images=$smallDir.$images;
} else {
$images=$bigDir.$images;
}
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0; $i++;
}
echo "<td align='center' valign='middle'><a href='$filename' target=_blank><img src='".$images."'></a></td>";
}
}
echo "</tr><tr>";
reset ($filesArray);
foreach ($filesArray as $images) {
$ext = strtolower(substr($images, strpos($images, ".")+1, strlen($images)));
if( in_array($ext, $AutorisedImageType) ) {
$image_name=strtolower($images);
$filename=$bigDir.$image_name;
list($width, $height, $type, $attr) = @getimagesize( $filename );
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0; $i++;
}
echo "<td align='center' valign='middle'><a href='$filename' target=_blank>$image_name</a><p>$width x $height</p></td>";
}
}
?>
</tr>
</table>
</center>
|
imgresize.php - немного оптимизирована работа и убрано выполнение функции при уже имеющейся превьюшке. Для ускорения работы вывода каталога изображений
<?
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением $filename
// Имя файла с уменьшенной копией $smallimage
// Если уменьшенная копия уже есть - выходим из функции
if (file_exists($smallimage)) {
return true;
}
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
list($width, $height, $type, $attr) = @getimagesize( $filename );
// Если размеры меньше, то масштабирования не нужно
if (($width<$w) && ($height<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$width/$height;
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
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 ($type==2) $src_img = imagecreatefromjpeg($filename);
else if ($type==1) $src_img = imagecreatefromgif($filename);
else if ($type==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $width - ширина исходного изображения
// $height - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $width, $height);
// сохраняем уменьшенную копию в файл
if ($type==2) imagejpeg($dest_img, $smallimage);
else if ($type==1) imagegif($dest_img, $smallimage);
else if ($type==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
// Вызов функции осуществляется следующим образом:
// $bigimage = "0033.jpg";
// $smallimage = "s_0033.jpg";
// resizeimg($bigimage, $smallimage, 200, 200);
?>
|
| |
|
|
|
|
|
|
|
для: tuder
(11.07.2006 в 10:16)
| | смотрите, сдесь же задаётся высота и ширина картинки. А если я хочу, как в Фотошопе, задавая размер одной из сторон, чтобы вторая менялась пропорционально, без искажений.
Спасибо! | |
|
|
|
|
|
|
|
для: pengo
(11.07.2006 в 11:48)
| | Почитайте указанную тему, где обсуждалась функция, так в частности, говорится:
В приведенном мною коде масштабирование, на самом деле, осуществляется по пропорциям исходного изображения.
Параметры $w=133 и $h=100 являются ограничителями максимальных размеров уменьшенной копии по ширине и высоте. Т.е. при масштабировании учитывается только один из этих параметров, а второй размер высчитывается автоматически исходя из пропорций исходного изображения.
|
А в скрипте вызов функции надо подправить на:
resizeimg($bigDir.$images, $smallDir.$image_name, $maxWidth, $maxHeight);
|
Чтобы использовались заданные в начале скрипта, конфигурационные переменные... | |
|
|
|
|
автор: Boss (с работы) (11.07.2006 в 13:36) |
|
|
для: YAN
(10.07.2006 в 14:36)
| | Ихмо
Лучше сделать 2 каталога, в одном хранить большие фото и в другом уменьшенные копии этих фоток(уменьшать при загрузке например), потому что каждый раз уменьшать фотки - это жестого по отношении к ресурсам сервера. | |
|
|
|
|
|
|
|
для: Boss (с работы)
(11.07.2006 в 13:36)
| | А в последнем варианте разве не так? Фото будут уменьшаться только при первом обращении к ним. Например, если если пользователи сами грузят свои фото.
$bigDir = 'image/'; // Каталог с изображениями
$smallDir = "image/small/"; // Каталог для помещения уменьшенных превьюшек
|
убрано выполнение функции при уже имеющейся превьюшке. Для ускорения работы вывода каталога изображений
|
// Если уменьшенная копия уже есть - выходим из функции
if (file_exists($smallimage)) {
return true;
}
|
Но, в принципе, действительно, уменьшать можно сразу после этой загрузки. Используя эту же функцию. А скрипт только для вывода имеющегося каталога. Но и оставить уменьшение. Вдруг при загрузке не сработало... | |
|
|
|
|
|
|
|
для: tuder
(11.07.2006 в 13:45)
| | Ух ты. Зашибись!
Все пашет!!!
Огромное спасибо!!!!!! | |
|
|
|
|
|
|
|
для: YAN
(12.07.2006 в 13:30)
| | Ой. Помогите. В моем случае маленькая ошибка.
Как сделать что бы таблица была не бесконечной.
Но она была. Допустим 3 фотки в длинну...
Извените за не столь не цензурные картинки... | |
|
|
|
|
|
|
|
для: YAN
(12.07.2006 в 22:40)
| | Вы просто когда картинку выводите прибовляйте 1 к какой нибуть переменной, и когда будет 3 то начинайте новый ряд и обнуляйте переменную =)
<?
// Some configuration variables !
include('imgresize.php'); // подключаем функцию
$maxWidth = 90;
$maxHeight = 90;
$maxCols = 5;
$i = 0;
$bigDir = 'image/'; // Каталог с изображениями
$smallDir = "image/small/"; // Каталог для помещения уменьшенных превьюшек
$AutorisedImageType = array ("jpg", "jpeg", "gif", "png");
?>
<center>
<table border='1' cellspacing='5' cellpadding='5' style="border-collapse:collapse; border-style: dotted">
<tr>
<?
// Open bigDir
$dh = opendir($bigDir);
while (false !== ($filename = readdir($dh))) {
$filesArray[] = $filename;
}
// Display and resize
foreach ($filesArray as $images) {
$ext = strtolower(substr($images, strpos($images, ".")+1, strlen($images)));
if( in_array($ext, $AutorisedImageType) ) {
$image_name=strtolower($images);
$filename=$bigDir.$image_name;
resizeimg($bigDir.$images, $smallDir.$image_name, 90, 90);
if (file_exists($smallDir.$images)) {
$images=$smallDir.$images;
} else {
$images=$bigDir.$images;
}
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0; $i++;
}
echo "<td align='center' valign='middle'><a href='$filename' target=_blank><img src='".$images."'></a></td>";
}
}
echo "</tr><tr>";
reset ($filesArray);
foreach ($filesArray as $images) {
$ext = strtolower(substr($images, strpos($images, ".")+1, strlen($images)));
if( in_array($ext, $AutorisedImageType) ) {
$image_name=strtolower($images);
$filename=$bigDir.$image_name;
list($width, $height, $type, $attr) = @getimagesize( $filename );
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0; $i++;
}
if($tr==3) {
$tr=0;
echo "</tr><tr>";
}
echo "<td align='center' valign='middle'><a href='$filename' target=_blank>$image_name</a><p>$width x $height</p></td>";
$tr =$tr+1;
}
}
?>
</tr>
</table>
</center>
|
незнаю тот ли скрипт я модифицировал =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(12.07.2006 в 23:16)
| | a $maxCols = 5; HA 4TO? | |
|
|
|
|
|
|
|
для: elenaki
(13.07.2006 в 10:07)
| | Помогите!!!!!
Как токо не коверял этот скрипт, все ровно получается не то что надо!
Даже выставил в начале:
<?
// Some configuration variables !
include('imgresize.php'); // $maxWidth = 150;
$maxHeight = 150;
$maxCols = 2;
$i = 0;
$bigDir = '1/';
$smallDir = "1/small/";
$AutorisedImageType = array ("jpg", "jpeg", "gif", "png");
?>
|
Надо чтобы было максимум 5 фото в длинну. И остольные на следущих строках. | |
|
|
|
|
|
|
|
для: YAN
(24.08.2006 в 18:40)
| | Людиии. Помогите!!!! | |
|
|
|
|
|
|
|
для: YAN
(24.08.2006 в 19:36)
| | :-( | |
|
|
|
|
|
|
|
для: YAN
(24.08.2006 в 21:54)
| | попробуй переписать кусок кода
if($i == $maxCols) {
echo "</tr><tr>";
$i = 0; $i++;
}
if($tr==3) {
$tr=0;
echo "</tr><tr>";
}
вот так
if($final == 0) echo "<tr>";
echo "<td>здесь твои данные</td>";
$final++;
if($final == 3)
{
echo "</tr>";
$final = 0;
}
Только подойдет ли для этой цели цикл foreach? | |
|
|
|