Имам само основни умения в php и трябваше да поставя фото галерии на уебсайт. Тъй като този уебсайт ще се използва от хора, които не разбират много от програмирането, исках проста употреба: качете папка със снимки (редактиране: през FTP), миниатюрите на фотогалерията се показват автоматично и щракване върху миниатюрата ще покаже пълния размер на изображението.
Използвах скрипт, който генерира миниатюра в движение. Този скрипт просто изглежда работи добре, ако го извикам директно в браузъра. Получавам миниатюрата си. Но когато покажа галерия в моята страница, като всеки източник на изображение е извикване на моя скрипт, се показват само случайни подмножества от миниатюри, а другите показват само алтернативния текст. Например, в галерия от 8, първият път, когато покажа страницата, може да получа само 3,4 и 7, а след опресняване 1,3,5,6,8:
Не можах да намеря съобщение за грешка, дадено от другите палци, които не се зареждат, но тук основните ми умения в php може да ме провалят, може би просто не знаех къде да намеря такова съобщение за грешка.
Ето извикването на моя скрипт:
<a href="/bgresources/galleries/example.jpg"><img src="mini.php?f=example.jpg" alt="Photo" /></a>
и mini.php използва GD:
<?php
$ratio = 150;
$dir = './resources/galleries';
if (!isset($_GET['f'])) {
header('location: index.php');
exit();
}
else {
$image = $_GET['f'];
$tableau = @getimagesize($dir.'/'.$image);
if ($tableau == FALSE) {
header('location: index.php');
exit();
}
else {
// if jpeg
if ($tableau[2] == 2) {
$src = imagecreatefromjpeg($dir.'/'.$image);
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
header ("Content-type: image/jpeg");
imagejpeg ($im);
}
elseif ($tableau[2] == 3) { // PNG
$src = imagecreatefrompng($dir.'/'.$image);
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
header ("Content-type: image/png");
imagepng ($im);
}
}
}
?>
Някаква идея?