getimagesize() x & y problem

ciberjoerg

Erfahrenes Mitglied
Hi Leute hab ein riesen Problem:
Der php script soll mir die Weite und Höhe eines bildes auslesen und anzeigen. Doch irgendwie geht das nicht so wie es soll.

PHP:
<?php

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<pics>';
$dir=opendir('images');

while ($file = readdir ($dir)) {
$bild = $file;
$info = getimagesize('images/'.$bild);

   if ($file != "." && $file != "..") {
         $shit = imagesx($file);
         echo $shit;
         echo '<pic picname="'.$bild.'" width="'.$info[0].'" height="'.$info[1].'">'.$bild.'</pic>';
   } 
}
closedir($dir); 

echo '</pics>';

?>
Ich bekomme dort folgende Fehler:

Warning: getimagesize(images/.) [function.getimagesize]: failed to open stream: Permission denied in C:\server\xampp\htdocs\cc\bilder.php on line 9

Warning: getimagesize(images/..) [function.getimagesize]: failed to open stream: Permission denied in C:\server\xampp\htdocs\cc\bilder.php on line 9

Warning: imagesx(): supplied argument is not a valid Image resource in C:\server\xampp\htdocs\cc\bilder.php on line 12
.DS_Store
Warning: imagesx(): supplied argument is not a valid Image resource in C:\server\xampp\htdocs\cc\bilder.php on line 12
0006802.jpg
Warning: imagesx(): supplied argument is not a valid Image resource in C:\server\xampp\htdocs\cc\bilder.php on line 12
0006825.jpg
Warning: imagesx(): supplied argument is not a valid Image resource in C:\server\xampp\htdocs\cc\bilder.php on line 12
0006830.jpg
Warning: imagesx(): supplied argument is not a valid Image resource in C:\server\xampp\htdocs\cc\bilder.php on line 12
Thumbs.db

Woran liegt der Fehler hab so eine Abfrage allerdings noch nie gemacht.
 
Probier mal Folgendes:
PHP:
<?php

	header('Content-Type: application/xml; charset=utf-8');

	echo '<?xml version="1.0" encoding="UTF-8"?>';
	echo '<pics>';
	$dir = opendir('images');
	while( $file = readdir($dir) ) {
		if( $file{0} !== '.' && $info = @getimagesize('images/'.$bild) ) {
			echo '<pic picname="'.$file.'" width="'.$info[0].'" height="'.$info[1].'">'.$file.'</pic>';
		} 
	}
	closedir($dir);

	echo '</pics>';

?>
 
Danke ich hab selbst grad nochmal daran rumeperimentiert,

damit gibts keine fehler meldungen mehr:
PHP:
<?php

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<pics>';
$dir=opendir('images');

while ($file = readdir ($dir)) {
$bild = $file;


   if ($file != "." && $file != ".." && $file != "Thumbs.db" && $file != ".DS_Store") {
            $info = getimagesize('images/'.$file);
         echo '<pic picname="'.$bild.'" width="'.$info[0].'" height="'.$info[1].'">'.$bild.'</pic>';
   } 
}
closedir($dir); 

echo '</pics>';

?>

und im quelltext wird mir das ganze dann so angezeigt:
HTML:
<?xml version="1.0" encoding="UTF-8"?><pics><pic picname="0006802.jpg" width="640" height="427">0006802.jpg</pic><pic picname="0006825.jpg" width="640" height="519">0006825.jpg</pic><pic picname="0006830.jpg" width="426" height="640">0006830.jpg</pic></pics>
 
Nur noch ne kurze frage, Wie kann ich das ganze aber dann so auslesen, dass Mir anstatt Der wirklichen Größe nur die Halbe größe angezeigt wird?

ich denke mir da in etwa so. hoffe das es so funktioniert:
PHP:
echo '<pic picname="'.$bild.'" width="'.$info[0].'*0,5" height="'.$info[1].'*0,5">'.$bild.'</pic>';
 
Na, du musst den ermittelten Zahlenwert der Bildbreite mit ner Zahl multiplizieren - oder dividieren - und nicht wie in deinem Beispiel mit einem String :)
PHP:
echo '<pic picname="'.$bild.'" width="'.$info[0] * 0.5 .'" height="'.$info[1] * 0.5 .'">'.$bild.'</pic>';

Ich würde dir aber auch empfehlen das hier nochmal durchzulesen: http://www.php.net/manual/de/function.readdir.php (richtiges einlesen eines Verzeichnisses).
 
Die Ausdrücke müssen dann aber geklammert werden:
PHP:
echo '<pic picname="'.$bild.'" width="'.($info[0] * 0.5).'" height="'.($info[1] * 0.5).'">'.$bild.'</pic>';
 
ok danke hab gehofft das das problem mit den bildgrößen so in flash mit geändert wird aber das war wohl nichts. aist aber nicht so schlimm.

danke nochmals an alle bis jetzt funktioniert alles super.
 
Zurück