JPG Qualität verschlechtern

maga147

Erfahrenes Mitglied
Hallo,

ich suche ein Script, wo ich Bilder von einem Verzeichnis nehmen kann und in verschlechterter Qualität (also wirklich JPG Quali, nicht größe) in einem anderen Verzeichnis speichern kann.

Dr. Google findet leider nichts passendes....

Habt ihr da eines was mir helfen könnte?
 
Also das Problem ist so klein und schnell erledigt.Ich denke nicht, dass es schon fertige Scripte dafür gibt. Ansonsten schau dir mal allgemeine Galerien oder PHP-Scripte an, die mit Bildern arbeiten, vielleicht bieten sie diese Option als Feature.
 
hmm... des möcht ich aber nicht,

ich hab jetzt schon einen Thumbnailer Script und ein Rename Script.

Jetzt möchte ich dieses noch um das Jpg Script erweitern
 
uff...

keine Ahnung wie das geht.... ich kann nur fertige PHP Scripte ausführen ;)

ne, also, ich habe fast keine ahnung von der Materie....

gibt es so ein Script noch nicht ich häng mal die Scripte von dem Thumbnailer an:

<?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 = "./original/"; // die Original Bilder
var $thumb_dir = "./thumb/"; // Ordner in dem die modifizierten Bilder gespeichert werden
var $thumb_w = 300;//110; // Breite (width) der modifizierten Bilder
var $thumb_h = 350;//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 ##
#########

?>

das ist die Klasse und dann kann man mit Start.php alles ausführen:

<?php
include("class.thumbnailer.php");
$objekt = New Thumbnailer;
echo "Alles ok!";
?>
 
maga147 hat gesagt.:
hmm... des möcht ich aber nicht,
Du verhälst dich ein wenig lächerlich...
Schau doch einfach in einerm Galerie-Script nach, dort ist bestimmt alles vorhanden was du brauchst, ohne ein wenig Eigeninitiative bin ich eher abgeneigt dir zu helfen...

Als Tipp:
Schau dir die
- Ordnerfunktionen
- Schleifen
- Grafikfunktionen
von PHP an und schließ das dann alles zusammen...
 
Operator_Jon hat gesagt.:
Du verhälst dich ein wenig lächerlich...
Schau doch einfach in einerm Galerie-Script nach, dort ist bestimmt alles vorhanden was du brauchst, ohne ein wenig Eigeninitiative bin ich eher abgeneigt dir zu helfen...

Das war eigentlich auf die Lösungsmöglichkeit bezogen.... Ich möchte diese art von lösung nicht....

Es tut mir schon leid wenn man von PHP keine Ahnung hat und sich dann an ein Forum wendet... aber Ich weis nicht was sich da auf die Funktion die ich brauch bezieht. Irgendwann hat jeder mal so angefangen wie ich....

Ich möchte ja eigentlich nur wissen ob jemand von euch ein Fertiges Script, weis oder hat, wo das problem behandelt wird.
 
maga147 hat gesagt.:
Irgendwann hat jeder mal so angefangen wie ich....

ne...die meisten hier haben sich ein PHP-Buch gekauft, das Buch gelesen, die darin beschriebenen Beispiele studiert und angepasst bis sie die verstanden haben, und sind dann von Projekt zu Projekt immer eine Schwierigkeitsstufe höher gekommen...angefangen beim Counter, einfachen Gästebuch oder so.

gruss
 
Zurück