У меня только базовые навыки в php, и мне пришлось разместить фотогалереи на сайте. Поскольку этот веб-сайт будет использоваться людьми, которые мало разбираются в программировании, я хотел простое использование: загрузить папку с фотографиями (редактировать: через FTP), миниатюры фотогалереи отображаются автоматически, и щелчок по миниатюре отобразит полный размер изображения.
Я использовал скрипт, который на лету генерирует эскиз. Кажется, что этот сценарий работает нормально, если я вызываю его прямо в браузере. Я получаю свой эскиз. Но когда я показываю галерею на своей странице, где каждый источник изображения является вызовом моего скрипта, отображается только случайное подмножество миниатюр, остальные отображают только замещающий текст. Например, в галерее из 8 при первом отображении страницы я могу получить только 3,4 и 7, а после обновления 1,3,5,6,8:
Я не смог найти сообщения об ошибке, выданного другими большими пальцами, которые не загружаются, но здесь мои базовые навыки в php могут меня подвести, возможно, я просто не знал, где найти такое сообщение об ошибке.
Вот призыв к моему сценарию:
<a href="resources/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);
}
}
}
?>
Любая идея?