Script zum Verkleinern von Bildern

L

lundi

Guest
Hallo zusammen,
ich habe eine Internetseite gebastelt und nun habe ich ein Problem. Ich brauche eine PHP- Script, welches einen Ordner nach Bildern durchsucht und diese dann verkleinert (Abmessungen)! Da ich nicht extra für dieses Script PHP lernen möchte, wollte ich Euch um Eure Hilfe beten. Wisst Ihr vielleicht, wo ich ein solches Script finden kann, oder habt Ihr eventuell sogar eins für mich? Ich hab natürlich schon ausgiebig bei Google und auf diversen Scriptseiten gesucht, jedoch leider nichts gefunden. Vielen Dank!
Der Lundi
 
die seiten kenn ich schon alle. hab doch geschrieben, dass ich dort nix gefunden hab. würde euch doch ni aufn keks gehen, wenn ich noch nicht gesucht hätte!
wink.gif
Es kann aber natürlich auch sein, dass ich nach den falschen stichwoten gesucht habe. hab ja, wie gesagt, keine ahnung von php!
 
Dieses spezifische Script wirst Du so warscheinlich nicht finden. Also wird es Bastelarbeit ;-)

Was zum Ordner auslesen hab ich, die Resizefunktion besitze ich aber nicht:

CODE function read_dir($dir, $pos=0){

$handle = @opendir($dir);
while ($file = @readdir ($handle)) {
if (eregi("^.{1,2}$",$file)) {
continue;
}

if (is_dir($dir.$file)){
read_dir($dir.$file."/");
} else {
if (substr($file,-4) == '.jpg')
do_resize ($dir.$file);
}
}
@closedir($handle);

}

function do_resize($pic) {

}

read_dir(".");


PS Wie man Bilder verkleinert steht hier: http://www.php-faq.de/q/q-grafik-verkleinern.html
Die Stichworte waren "php ordner auslesen" und "php grafik verkleinern"
 
ist echt nett von dir, aber viel hilft mir das nicht. wollte das script donloaden und nun hab ich die seite auf meinem rechner (auf die der link verweist)
huh.gif
komisch...
 
Also, wenn Du das Verzeichnis schon mal auslesen kannst (siehe Alains Code) dann gehts jetzt ans Verkleinern. Das machst Du so:
CODE <?php
// Ein paar Variablen
$PicPath = "Images"; // oder ein anderes existierendes Verzeichnis
$picture = "Dateiname_von_Bild.gif_oder_jpg"; // irgend ein Dateiname eines existierenden Bildes
$ThumbPath = "Thumbs"; // oder ein anderes existierendes Verzeichnis
$ThumbWidth = 150; // Breite der Thumbnails, Höhe wird dynamisch berechnet

// Thumbnail erzeugen ...
$Size=getimagesize("$PicPath"."/"."$picture");
$Width=$Size[0];
$Heigth=$Size[1];
$NewHeigth=intval($Heigth*$ThumbWidth/$Width);

// ... Für GIF-Bilder
if($Size[2]==1)
{
$OldPic=ImageCreateFromGIF("$PicPath"."/"."$picture");
$NewPic=imagecreatetruecolor($ThumbWidth, $NewHeigth);
ImageCopyResized($NewPic, $OldPic, 0, 0, 0, 0, $ThumbWidth, $NewHeigth, $Width, $Heigth);
ImageGIF($NewPic, "$ThumbPath"."/"."$picture");
}

// ... Für JPG-Bilder
if($Size[2]==2)
{
$OldPic=ImageCreateFromJPEG("$PicPath"."/"."$picture");
$NewPic=imagecreatetruecolor($ThumbWidth, $NewHeigth);
ImageCopyResized($NewPic, $OldPic, 0, 0, 0, 0, $ThumbWidth, $NewHeigth, $Width, $Heigth);
ImageJPEG($NewPic, "$ThumbPath"."/"."$picture");
}
?>


Geht für Gif und für Jpg.

Hamlet
 
ihr seid soooo lieb zu mir! jetzt muss ich bloß noch kurz wissen, wie ich die dateien zusammenfügen muss! kann ich die in eine datei stecken oder... (bin echt ein richtiger anfänger!) schreibt mir auch gleich mal die adressen von euren seiten, falls ihr welche habt! da kann ich mich wenigstens mit einer verlinkung revanchieren! vielleicht bringt's ja den ein oder anderen klick!
 
in dem ordner sind bilder gespeichert. diese sollen dann verkleinert und überschrieben werden!
 
Bist Du sicher, das ist heikel?
Willst Du sie nicht in eine anderen Ordner kopieren? Das wäre sicherer.
 
bringt mir jetzt nicht mehr so viel. hmmmm. mist. ich werde die funktion für angemeldete user nur bereitstellen!
 
Ich hab jetzt die Sachen von mir und Hamlet gemerged, und sogar getestet ;-) (ich hab noch nie was mit Imagemodifikation gemacht)

Diese Datei musst speichern, in .php umbenennen und in den Ordner mit den zu bearbeitenden Bildern speichen.
Vorher musst Du noch folgendes ändern:

$ThumbPath = "thumbs"; // oder ein anderes existierendes Verzeichnis

Dieser Ordner muss in dem Ordner existieren, in dem die Bilder sind, sowie musst Du Schreibrecht haben.

CODE <?PHP

function read_dir($dir, $pos=0){

$handle = @opendir($dir);
while ($file = @readdir ($handle)) {
if (eregi("^.{1,2}$",$file)) {
continue;
}

if (is_dir($dir.$file)){
echo "DIR".$dir.$file."/<br>";
read_dir($dir.$file."/");

} else {
if (substr($file,-4) == '.jpg' || substr($file,-4) == '.gif' ) {
echo $file."<br>";
do_resize ($dir,$file);
}
}
}
@closedir($handle);

}

function do_resize($PicPath, $picture) {

// Hier musst Du den Ordnernamen eingeben, in welchem Ordner die Dateien gespeichert werden.
$ThumbPath = "thumbs"; // oder ein anderes existierendes Verzeichnis
$ThumbWidth = 150; // Breite der Thumbnails, Höhe wird dynamisch berechnet

// Thumbnail erzeugen ...
//$Size=getimagesize("$PicPath"."/"."$picture"); picpath hat trailing slash
$Size=getimagesize("$PicPath"."$picture");
$Width=$Size[0];
$Heigth=$Size[1];
$NewHeigth=intval($Heigth*$ThumbWidth/$Width);

// ... Für GIF-Bilder
if($Size[2]==1)
{
$OldPic=ImageCreateFromGIF("$PicPath"."/"."$picture");
$NewPic=imagecreatetruecolor($ThumbWidth, $NewHeigth);
ImageCopyResized($NewPic, $OldPic, 0, 0, 0, 0, $ThumbWidth, $NewHeigth, $Width, $Heigth);
if (function_exists(imagegif))
ImageGIF($NewPic, "$ThumbPath"."/"."$picture");
else
ImageJPEG($NewPic, "$ThumbPath"."/"."$picture");
}

// ... Für JPG-Bilder
if($Size[2]==2)
{
$OldPic=ImageCreateFromJPEG("$PicPath"."/"."$picture");
$NewPic=imagecreatetruecolor($ThumbWidth, $NewHeigth);
ImageCopyResized($NewPic, $OldPic, 0, 0, 0, 0, $ThumbWidth, $NewHeigth, $Width, $Heigth);
ImageJPEG($NewPic, "$ThumbPath"."/"."$picture");
}



}

read_dir("./");

?>



Die Url von Hamlet (nice joint btw ;-) ist http://www.intercom2000.ch/ und meine steht in der Adresszeile deines Browsers.

PS Ich hab die Funktion Imagegif nicht aktiv, also hab ich einen kleinen Workaround beschissen. Mir ist zwar nicht klar, was der Unterschied ist (Hamlet?) aber es funktioniert.
 
ich hab alles so gemacht, wie du es beschrieben hast. wenn ich jetzt die php- datei ausrühre, dann öffnet sich eine seite, wo

CODE DIR./neu/
DIR./thumbnails/


steht. das verzeichnis habe ich "neu" genannt ($ThumbPath = "neu";)
in dem verzeichnis werden die veränderten bilder aber nicht gespeichert.

noch mal vielen dank für eure geduld! ihr seid echt 100 mal besser, als die auf php.de!
 
Hast Du Chmod d.h. Schreibrecht gesetzt?

Was für ein FTP Programm benutzt Du? Du musst den Ordner rechtsklicken und bei den Eigenschaften Schreiben zulassen.
 
es hat sich erledigt. ich hab es geschafft! ich werd jetzt die funktionen in die galerie einbauen und, sobald ich sie hochlade, auch gleich die seite mit den euren verlinken!
noch einen schönen abend!
mario
 
@Alain:
QUOTE Mir ist zwar nicht klar, was der Unterschied ist (Hamlet?)

Ääh, ja, gute Frage, nächste bitte!
Nein im Ernst, imagegif wurde bis zur Version 1.6 der GD-Bibliothek unterstützt und dann durch imagepng ersetzt, imagejpeg kam aber erst mit der Version 1.8 dazu.

Das Gif-Format bietet einige Möglichkeiten, die JPEG nicht kann, z.B. Interlacing, Animation und Transparenz, dafür hat es maximal 256 Farben. Deshalb kommen Farbverläufe in Gif ganz besonders hässlich.
Dafür kann JPEG viel mehr Farben (ich glaube das waren 16 Mio), weshalb es sich eben für Fotos anbietet.
Das PNG-Format soll nun die Vorzüge von Gif und Jpeg verbinden, also 16 Mio Farben und dazu noch 256 Transparenzstufen und alles beinahe verlustfrei.
blink.gif

Ich habe nun mit Png auch zu wenig Erfahrung, um das beurteilen zu können, jedenfalls wird, aufgrund der verschiedenen Eigenschaften, einigermassen klar, weshalb es in der PHP-Referenz verschiedene Funktionen gibt.

Wer Zeit und Lust hat, kann ja hier mal ein wenig stöbern:
http://ch2.php.net/manual/de/ref.image.php

@lundi:

QUOTE ihr seid echt 100 mal besser, als die auf php.de

Das liegt in der Natur der Sache, weil die sich ganz auf PHP spezialisiert haben. Da wird halt schon vorausgesetzt, dass man ein wenig Kenntnisse mitbringt oder zumindest mal ein wenig in der Dokumentation gelesen hat. RTFM (Read that fucking Manual) sage ich da immer wieder.
Ich habs schon gesehen, dass Du Dich bei php.de mit dem rüber kopierten Code (ohne Quellenangabe!) ein wenig zum "Obst" gemacht hast, wie Du das so schön zu sagen pflegst:
http://www.php.de/viewtopic.php?t=28611

Ungeduld wird halt in den wenigsten Foren gerne gesehen. Mit ein wenig Geduld beim Stöbern und Lesen jedoch, wärst Du auch bei php.de auf ganz brauchbare Resultate gekommen. Gucksuhier:
http://www.php.de/viewtopic.php?t=22770
http://www.php.de/viewtopic.php?t=23290
http://www.php.de/viewtopic.php?t=25492
http://www.php.de/viewtopic.php?t=28546

Entgegen der landläufigen Annahme, Programmierer seien Sklaven, die sofort zu rennen haben, wenn der Newbie das befiehlt, sind eben auch Programmierer Menschen mit unveräusserlichen Rechten. Dies dürfte erklären, weshalb Du bei Php.de ein wenig schroff behandelt wurdest.
wink.gif


Hamlet
 
@Hamlet, danke für die Ausführung.

Zitat des Tages:
QUOTE Entgegen der landläufigen Annahme, Programmierer seien Sklaven, die sofort zu rennen haben, wenn der Newbie das befiehlt, sind eben auch Programmierer Menschen mit unveräusserlichen Rechten. Dies dürfte erklären, weshalb Du bei Php.de ein wenig schroff behandelt wurdest.

;-)
 
Zurück
Oben