Помогите скриптом

C
На сайте с 13.12.2008
Offline
1
600

Здравствуйте Ув. форумчане! Мне нужен скрипт для вывода 20 случайных картинок из папки (foto), при этом чтобы среди этих 20-ти картинок небыло повторов, и эти 20 картинок (уменьшенные копии) ссылались на увеличенные! Помогите скриптом, я уже потратил неделю на поиск, но не нашел что искал.

[Удален]
#1

тыща рублей и нет проблем.

malls
На сайте с 08.08.2005
Offline
255
#2
neolord:
тыща рублей и нет проблем.

За помощь в поиске по форуму? 😂

[Удален]
#3

да я думаю что ровно такого же здесь не найдется =) по частям запросто.

Эх, ну ладно


$tpl="<a href='{:big:}'><img src='{:small:}'/></a><br/>"; //шаблон для картинки
$dir="/foto/"; //папка с картинками
$images=array();

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (is_file($dir.$file)) $images[]=$file;
}
closedir($dh);
}
}

foreach ( array_rand($images,20) as $image)
echo str_replace(
array("{:small:}","{:big:}"),
array("/thumb.php?fname=".$dir.urlencode($image)."&sizeX=120&sizeY=100",
"http://".$_SERVER['HTTP_HOST'].$dir.$image),
$tmp);

thumb.php Это генератор превью. требует библиотеки GD. Простейший код -


header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename="/image.jpeg"');

function ThrowBlank()
{
$img = imagecreatetruecolor($_GET['sizeX'], $_GET['sizeY']); /* Create a blank image */
$bgc = imagecolorallocate($img, 255, 255, 255);
$tc = imagecolorallocate($img, 0, 0, 0);
imagefilledrectangle($img, 0, 0, $_GET['sizeX'], $_GET['sizeY'], $bgc);
imagejpeg($img);
exit();
}

function LoadJpeg($imgname)
{
if (strrchr($imgname,"gif")=='gif')
$img=@imagecreatefromgif($imgname);
else
$img = @imagecreatefromjpeg($imgname); /* Attempt to open */
if (!$img) { /* See if it failed */
ThrowBlank();
}

if (!isset($_REQUEST['fname']))
ThrowBlank();
$filename = $_SERVER['DOCUMENT_ROOT'].str_replace("http://".str_replace("www.","",$_SERVER['HTTP_HOST']),"",urldecode($_REQUEST['fname']));
// Get new dimensions
list($width, $height) = getimagesize($filename);
$percent=$_GET['sizeX']/$width;
if ($height>$width)
{
$percent=$_GET['sizeY']/$height;
}
$new_width = $width * $percent;
$new_height = $height * $percent;

$image_p = imagecreatetruecolor($new_width, $new_height);
$image = LoadJpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_p);

можно туда еще кеширование прикрутить

Swhile
На сайте с 02.05.2007
Offline
58
#4

Если тема еще актуальна - пишите, icq 8653178

malls
На сайте с 08.08.2005
Offline
255
#5
neolord:
да я думаю что ровно такого же здесь не найдется =) по частям запросто.
Эх, ну ладно

:)

Забыл еще картинки "png" и !!! :), посмотрим как получится, "bmp", прикрутить.

Кстати решение красивое: array_rand($images,20), но точно оно разные выберет? Не будет пересечений?

[Удален]
#6

Точно разные.

ну пнг и бмп туда дописать 2 строчки - imagecreatefrompng и imagecreatefromwbmp

Правда с прозрачностью у пнг могут быть проблемы

malls
На сайте с 08.08.2005
Offline
255
#7

Скорее с bmp будет проблемы :) imagecreatefromwbmp это не для bmp, это для wbmp !

bmp это вообще задача не тривиальная совсем.

Самое забавное что если прочитать bmp-шку можно (есть пример неплохой в доках на php.net) то записать тумбу в виде bmp файла или сохранить картинку в виде bmp почти нереально (надо кодить это дело разбираясь во внутреннем устройстве bmp)

Я потому и прикололся на эту тему.

[Удален]
#8

ах вот вы о чем. Ну если мне не изменяет память, ImageMagick имеет встроенные функции для работы с тру-бмп. Я уже если честно и забыл что это за формат =) Но лет 7 назад я писал как то его загрузку/выгрузку, у него довольно простой формат и проблем, кроме рутины, это, как мне кажется, не представляет =)

C
На сайте с 13.12.2008
Offline
1
#9

Спасибо большое за скрипт! Сейчас буду его юзать.🍾

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