Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Grafiken werde nicht erstellt [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Grafiken werde nicht erstellt


 
presentweb
26-02-2004, 19:05 
 
Hallo,

das ist mein Problemcode:
<?php
// ===========================================================================
// Verzeichnis lesen
// ===========================================================================
$verz = opendir ("test");
// ===========================================================================
// Dateien umbennen (Neutralität)
// ===========================================================================
/*$i = "0";
while($g_file = readdir($verz)){
$i++;
if($g_file != "." && $g_file != ".."){
rename($g_file, "jpg");
}
}*/
// ===========================================================================
// Array erstellen
// ===========================================================================
$array = array();
while ($file = readdir ($verz)){

if($file != "." && $file != ".."){
array_push($array,$file);
}

}
// ===========================================================================
// Verzeichnis schließen
// ===========================================================================
closedir($verz);

// ===========================================================================
// Verzeichnisinhalt (Dateinamen) ausgeben lassen
// ===========================================================================
foreach($array as $element){
// ===========================================================================
// Bilder die über 400px breit sind, werden hier verkleinert
// ===========================================================================
$src_img = imagecreatefromjpeg("../test/$element");
$height = imagesy($src_img);
$width = imagesx($src_img);
$new_w = 80;
$new_h = $height / ($width / 80);
$dst_img = imagecreatefromjpeg($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
imagejpeg($dst_img, "../test/neu_$element");
}

?>


Meine Fragen:
a) Wieso werden keine Grafiken erstellt?! Wenn ich das Script im Browser aufrufe, erscheint nur eine weisse Seite...
b) Wie kann ich Grafiken "on-the-fly" verkleinern, damit diese nicht auf dem Webspace ausgelagert werden müssen.

Vielen Dank!

 
Hopka
26-02-2004, 19:08 
 
imagejpeg($dst_img, "../test/neu_$element");
Das speichert die Sachen ab.

Deswegen wird wohl auch nix angezeigt.

Mehr Infos:
http://php.net/imagejpeg

 
derHund
26-02-2004, 19:11 
 
hmm,

$dst_img = imagecreatefromjpeg($new_w,$new_h);
das erscheint mir auch eigenartig ... :confused:

wolltest du
imagecreatetruecolor()?

da müssen fehlermeldungen ausgegeben werden!?

 
presentweb
26-02-2004, 19:45 
 
@Der Hund,

ja genau, das wollte ich! Irgendwie geht es immer noch nicht! Es wird nur eine weisse Seite angezeigt und es wird nix gemacht bzw. verändert (verkleinert)...

Gruss

 
derHund
26-02-2004, 19:53 
 
hmm,

aktueller code? nach möglichkeit aufs wesentliche reduziert ...

wenn du on-the-fly'st, mußt du nen header senden, es müßte aber trotdem mist im browser ausgegeben werden ...

btw: auch eine weisse Seite hat nen quelltext :dontknow:

 
Wurzel
26-02-2004, 20:29 
 
bei dem code wird nichts an den browser geliefert ... ausser evtl. einer
fehlermeldung (ini-einstellung) ... abgesehen davon sind die image-fkts
gerne etwas sparsam mit fehlermeldungen

zu a)
sóllte klar sein: imagecreate() / imagecreatetruecolor() statt $dst_img = ..

zu b)
1. images on-the-fly via schleife an den browser zu senden geht nicht ...
1 bild, 1 header = 1 ausgabe

2. <img src="bild.php?img=1">
die bild.php erzeugt 1 thumb von bild 1 und liefert die ausgabe zurück,
wenn die ausgebende fkt das nicht auf die platte schreibt und der header
stimmt.

3. diese methode ist für 1, 2, 3 bilder ok, aber für eine vielzahl an bilder
imho unperformant.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:34 Uhr.