Hallo zusammen,
hat jemand Erfahrung, wie man relativ schnell kleine Vorschaubilder für die Lightbox herstellen kann? Zum Beispiel durch Stapelverarbeitung?
Danke erst mal!
Hallo zusammen,
hat jemand Erfahrung, wie man relativ schnell kleine Vorschaubilder für die Lightbox herstellen kann? Zum Beispiel durch Stapelverarbeitung?
Danke erst mal!
hat jemand Erfahrung, wie man relativ schnell kleine Vorschaubilder für die Lightbox herstellen kann?
Ja, habe ich. Und damit wäre deine Frage korrekt beantwortet
Man kann sich z.B. ein PHP-Script basteln, dass alle Bilder aus einem Verzeichnis ausliest und diese verkleinert und in ein anderes Verzeichnis oder unter anderem Dateinamen speichert.
"Man kann" - ich nicht! PHP ist für mich etwas was ich noch nicht beherrsche, aber vielleicht kann mir jemand helfen?
Es gibt auch eine Reihe von Bildbearbeitungsprogrammen mit Batch-Modus bzw. Stapelverarbeitung wo Du Bilder auf die gewünschte Größe verkleinern kannst. Irfanview ist eines, was sehr häufig verwendet wird.
index.php
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Image-Resizer</title>
</head>
<body>
<h3>Image-Resizer</h3>
<?php
if ( ! isset($_POST["submit"]))
{
?>
<form action='<?php echo $_SERVER["SCRIPT_NAME"]; ?>' method='POST'>
<table>
<tr>
<td>Quellverzeichnis:</td>
<td><input type='text' name='source' size='30'></td>
</tr>
<tr>
<td>Zielverzeichnis:</td>
<td><input type='text' name='destination' size='30'></td>
</tr>
<tr>
<td>Breite in Pixel:</td>
<td><input type='text' name='width' size='4'></td>
</tr>
<tr>
<td>Höhe in Pixel:</td>
<td><input type='text' name='height' size='4'></td>
</tr>
<tr>
<td>Qualität:</td>
<td><input type='text' name='quality' size='4' value='100'></td>
</tr>
<tr>
<td>Proportional:</td>
<td><input type='checkbox' name='fixed' checked></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='submit' value='Abschicken'</td>
</tr>
</table>
</form>
<?php
}
else
{
// Bei Timeout-Problemen den Wert erhöhen
ini_set("max_execution_time", "3000");
$source = $_POST["source"];
$dest = $_POST["destination"];
$width = $_POST["width"];
$height = $_POST["height"];
$quality = $_POST["quality"];
if (isset($_POST["fixed"]))
$fixed = true;
else
$fixed = false;
if (! strlen ($source))
{
echo "Kein Quellverzeichnis";
exit;
}
if (! strlen ($dest))
{
echo "Kein Zielverzeichnis";
exit;
}
if (! strlen ($width) && ! strlen ($height))
{
echo "Keine Größen angegeben";
exit;
}
if ($fixed)
{
if (strlen ($width))
$height = 0;
else if (strlen ($height))
$width = 0;
}
include_once("./class.imageResizer.php");
$resizer = new CImageResizer();
$resizer->setMembers($source, $dest, $width, $height, $quality);
$result = $resizer->run();
if (is_array($result))
echo implode("<br>\n", $result);
else
echo "Fehler: $result";
}
?>
</body>
</html>
Alles anzeigen
class.imageResizer.php
<?php
class CImageResizer
{
private $sourcePath;
private $destinationPath;
private $width;
private $height;
private $quality;
private $extensions;
//---------------------------------------------------------------
// public functions
//---------------------------------------------------------------
function __construct()
{
$this->sourcePath = "";
$this->destinationPath = "";
$this->width = 0;
$this->height = 0;
$this->quality = 100;
$this->extensions = array("*.png", "*.jpg", "*.jpeg", "*.gif");
}
//---------------------------------------------------------------
function setSourcePath($path)
{
$this->sourcePath = $path;
}
//---------------------------------------------------------------
function setDestinationPath($path)
{
$this->destinationPath = $path;
}
//---------------------------------------------------------------
function setHeight($height)
{
$this->height = $height;
}
//---------------------------------------------------------------
function setWidth($width)
{
$this->width = $width;
}
//---------------------------------------------------------------
function setQuality($quality)
{
$this->quality = $quality;
}
//---------------------------------------------------------------
function setExtensions($extensions)
{
if (is_array($extensions))
$this->extensions = $extensions;
}
//---------------------------------------------------------------
function setMembers($sourcePath, $destinationPath, $width, $height, $quality = 0)
{
$this->sourcePath = $sourcePath;
$this->destinationPath = $destinationPath;
$this->width = $width;
$this->height = $height;
$this->quality = $quality;
}
//---------------------------------------------------------------
function run()
{
$result = array();
if ($this->checkSourcePath())
{
if ($this->checkDestinationPath())
{
if ($this->sourcePath != $this->destinationPath)
{
$files = $this->getFiles();
if (count($files))
{
foreach($files as $file)
{
if ($this->resizeImage($file))
$result[] = "$file erfolgreich resized";
else
$result[] = "$file nicht erfolgreich resized";
}
}
else
$result = "Keine Dateien gefunden";
}
else
$result = "Verzeichnisse sind gleich";
}
else
$result = $this->destinationPath . " nicht vorhanden und kann nicht angelegt werden";
}
else
$result = $this->sourcePath . " nicht vorhanden";
return $result;
}
//---------------------------------------------------------------
// protected functions
//---------------------------------------------------------------
protected function getFiles()
{
$result = array();
$result = glob ($this->sourcePath . "/{" . implode(",", $this->extensions) . "}", GLOB_BRACE);
return $result;
}
//---------------------------------------------------------------
protected function checkSourcePath()
{
$result = true;
if (! file_exists($this->sourcePath))
$result = false;
return $result;
}
//---------------------------------------------------------------
protected function checkDestinationPath()
{
$result = true;
if (! file_exists($this->destinationPath))
{
if ( ! mkdir ($this->destinationPath, "0777"))
{
$result = false;
}
}
return $result;
}
//---------------------------------------------------------------
protected function resizeImage($file)
{
if (file_exists($file))
{
if ($this->width == 0 && $this->height == 0)
return false;
$src = strtolower($this->sourcePath . "/" . $file);
$src = pathinfo($src);
$dest = strtolower($this->destinationPath . "/" . $src['basename']);
$dest = pathinfo($dest);
$size = getimagesize($file);
if ($this->height && ! $this->width)
{
$h = number_format($this->height, 0, ',', '');
$w = number_format(($size[0] / $size[1]) * $this->height, 0, ',' ,'');
}
else if (! $this->height && $this->width)
{
$w = number_format($this->width, 0, ',', '');
$h = number_format(($size[1] / $size[0]) * $this->width, 0, ', ','');
}
else
{
$h = number_format($this->height, 0, ',', '');
$w = number_format($this->width, 0, ',', '');
}
if (! in_array("*." . $src['extension'], $this->extensions))
return false;
$dest_image = imagecreatetruecolor($w, $h);
imageantialias($dest_image, true);
switch($size[2])
{
case 1: //GIF
$src_image = imagecreatefromgif($file);
break;
case 2: //JPEG
$src_image = imagecreatefromjpeg($file);
break;
case 3: //PNG
$src_image = imagecreatefrompng($file);
break;
default:
return false;
break;
}
imagecopyresampled($dest_image, $src_image, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
switch($size[2])
{
case 1:
imagegif($dest_image, $this->destinationPath . "/" . $src['basename']);
break;
case 2:
imagejpeg($dest_image, $this->destinationPath . "/" . $src['basename'], $this->quality);
break;
case 3:
imagepng($dest_image, $this->destinationPath . "/" . $src['basename']);
break;
}
return true;
}
else
return false;
}
}
?>
Alles anzeigen
Das ist aber lieb, m.scatello. Vielen Dank! Ich werde das die Tage mal testen.
Ich habe jetzt beide Dateien in einen separaten Ordner (http://localhost/phpkleinefotos/) in das xampp-Verzeichnis kopiert. Bei Aufruf von Localhost und Ordnernamen passiert nichts. Kann das sein? (Apache und MySQL sind gestartet)
Die index.php sollte er eigentlich aufrufen, zumal beim ersten Aufruf ja noch nichts passiert, außer dass das Formular angezeigt wird. Mir fallen da zwei Möglichkeiten ein:
Sieh' dir mal an, ob man im Browser etwas sieht, wenn man sich den Quellcode anzeigen lässt
Sorry! Die index.php war (leider) leer!
Danke nochmal!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.