hallo zusammen,
ich habe mir ein thumbnailerscript besorgt, mit dem ich bilder eines verzeichnisses zu thumbnails umwandeln kann.
bisher ist das script ein "stand alone" script und wird ueber start.php aufgrufen
PHP-Code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>FS- Thumbnailer v. 1.0</title>
</head>
<body>
<?php
include("class.thumbnailer.php");
$objekt = New Thumbnailer;
echo "Alles ok!";
?>
</body>
</html>
das script selbst ist class.thumbnailer.php
PHP-Code:
<?php
class Thumbnailer {
######### Eigenschaften der Klasse/des Objekts
var $autocreate = true; // soll das verkleinern der Bilder direkt beginnen? wenn ja, müssen die Eigenschaften korrekte Werte erhalten!!
var $single_mode = false; // sollen nur einige Bilder oder alle Bilder im Ordner verkleinert werden?
var $image_list = array(); // falls $single_mode = true, dann müssen hier die Bilder reingeschrieben werden, die verkleinert werden sollen
var $ersetzen = false; // soll, wenn ein Bild bereits vorhanden ist, dieses ersetzt werden?
var $image_ext = array("gif","jpg","jpeg","png","wbmp"); // unterstütze Bildformate. nicht erweitern!
var $image_dir = "./bilder/"; // die Original Bilder
var $thumb_dir = "./bilder/thumb/"; // Ordner in dem die modifizierten Bilder gespeichert werden
var $thumb_w = 250;//110; // Breite (width) der modifizierten Bilder
var $thumb_h = 290;//110; // Höhe (height) der modifizierten Bilder
######### Methoden der Klasse/des Objekts
##### gibt alle Bilder mit den korrekten Endungen in einem Array zurück
function list_all_images() {
$files = array();
$dir_handle = opendir($this->image_dir);
while ($file = readdir($dir_handle)) {
if ($file != "." && $file != ".." && !is_dir($this->image_dir.$file)) {
$tmp_file = explode(".",$file);
$i = 0;
while ($i < count($this->image_ext)) {
if ($this->image_ext[$i] == strtolower($tmp_file[count($tmp_file)-1])) {
$files[] = $file;
}
$i++;
}
}
}
closedir($dir_handle);
return $files;
}
##### Erstellt ein Thumbnail
function create_thumb($filename) {
$file = $this->image_dir.$filename;
if ($this->ersetzen || !file_exists($this->thumb_dir.$filename)) {
#### Bild- Datei und -Endung
$tmp_file = explode(".",$file);
$ext = strtolower($tmp_file[count($tmp_file)-1]);
#### Bild aus Datei erstellen; Bildtypen müssen unterschieden werden
if ($ext == "jpg" || $ext == "jpeg") {
$img = imagecreatefromjpeg($file);
} elseif ($ext == "gif") {
$img = imagecreatefromgif($file);
} elseif ($ext == "png") {
$img = imagecreatefrompng($file);
} elseif ($ext == "wbmp") {
$img = imagecreatefromwbmp($file);
} else {
return false;
}
#### Größen ablesen
$old_w = imagesx($img);
$old_h = imagesy($img);
#### neue Größen bestimmen
if ($old_w > $old_h) {
$thumb_w = $this->thumb_w;
$thumb_h = $old_h*($this->thumb_w/$old_w);
}
if ($old_w < $old_h) {
$thumb_w = $old_w*($this->thumb_h/$old_h);
$thumb_h = $this->thumb_h;
}
if ($old_w == $old_h) {
$thumb_w = $this->thumb_w;
$thumb_h = $this->thumb_h;
}
#### Bild erzeugen in korrekter Größe
$new_img = @imagecreatetruecolor($thumb_w,$thumb_h);
if (!$new_img) {
$new_img = imagecreate($thumb_w,$thumb_h);
imagecopyresized($new_img,$img,0,0,0,0,$thumb_w,$thumb_h,$old_w,$old_h);
} else {
imagecopyresampled($new_img,$img,0,0,0,0,$thumb_w,$thumb_h,$old_w,$old_h);
}
#### Bild speichern; Bildtypen müssen unterschieden werden
if ($ext == "jpg" || $ext == "jpeg") {
imagejpeg($new_img,$this->thumb_dir.$filename);
} elseif ($ext == "gif") {
imagegif($new_img,$this->thumb_dir.$filename);
} elseif ($ext == "png") {
imagepng($new_img,$this->thumb_dir.$filename);
} elseif ($ext == "wbmp") {
imagewbmp($new_img,$this->thumb_dir.$filename);
} else {
return false;
}
#### Cache leeren
imagedestroy($new_img);
imagedestroy($img);
return true;
} else {
return false;
}
}
##### Lässt Thumbnails anhand der Bilder im Ordner erzeugen
function create_thumbs() {
if ($this->single_mode) {
$files = $this->image_list;
} else {
$files = $this->list_all_images();
}
$i = 0;
while ($i < count($files)) {
$this->create_thumb($files[$i]);
$i++;
}
return true;
}
##### Konstruktor für die Klasse (wird nur ausgeführt, wenn die Klasse sofort starten soll)
function Thumbnailer() {
if ($this->autocreate) {
$this->create_thumbs();
}
}
######### Ende der Klasse/des Objekts
}
#########
## EOF ##
#########
?>
beim aufruf des scripts sollen nicht alle bilder eines verzeichnisses bearbeitet werden sondern nur die bilder, die gerade hochgeladen wurden. der bildname steht in der variablen $bildname.
wenn ich bei "var $single_mode = false;" true eintrage, wie bekomme ich dann den bildnamen in "var $image_list = array()" hinein. der bildname bzw. die variable ist zudem ja auch nicht einer anderen datei (datenadd.php) definiert und vorhanden?
ist fuer euch sicher recht einfach, aber ich komme leider nicht drauf.
im voraus vielen dank
MIMAMO