Bilder über ein Script anzeigen

thespecialx

Mitglied
Hallo,

ich würde gerne folgendes realisieren :

in ein Image- Tag das Bild durch ein Script anzeigen lassen . also

<img src="<? echo "showpic.php?id=xxxx";?>"...............

in dieser showpic.php sollte dann das Bild,dass eine bestimmte id besitzt aufgerufen werden und dann in die Seite eingebetten werden.

ich möchte dies ohne readfile() realisieren...

(Die Bilder befinden Sich alle auf dem Server, sind nicht in einer Mysql als binnary gespeichert)
Danke.
 
Hallo,

erlaube mir die Frage. Weshalb unbedingt ohne Readfile?
Ein Ansatz würde mich auch interessieren.

MfG

DanielL
 
Wo ist das Problem ?

In deiner showpic.php entsprechend Header() setzen und :

<img src="<? showpic.php?id=xxxx"; ?>"...............

Also OHNE echo ....
 
Du musst mit der Funktion header() dem Browser den richtigen Content-Type mitteilen. Wenn Du z.B. ein JPEG ausgibst ist der richtige Befehl der folgende:
PHP:
header('Content-Type: image/jpeg');
 
CIX88 hat gesagt.:
Wo ist das Problem ?

In deiner showpic.php entsprechend Header() setzen und :

<img src="<? showpic.php?id=xxxx"; ?>"...............

Also OHNE echo ....
Natürlich MIT echo, OHNE würde es einen Parse-Error geben.
Oder gleich ohne PHP ausgeben:
<img src="showpic.php?id=xxxx">
 
Hallo,

ich denke, die Frage war viel mehr, wie man das Bild mit PHP "einlesen" kann, ohne readfile zu nutzen. Ob nun mit oder ohne echo, ist ja gar nicht die frage. Aber was würde das für einen Sinn ergeben, das echo weg zu lassen?


MfG

DanielL
 
Wenn nicht mit readfile() gemacht werden soll, dann eben ueber fopen() und fread().
Beispiel:
PHP:
$pic=fopen('stupidlittlepicture.jpg','r');
$picdata=fread($pic,filesize('stupidlittlepicture.jpg'));
fclose($pic);
header('Content-Type: image/jpeg');
echo $picdata;
 
Du könntest auch die file_get_contents()-Funktion nutzen:
PHP:
<?php

	$filepath = '…';
	$mediatypes = array(
		1 => 'image/gif',
		2 => 'image/jpeg',
		3 => 'image/png',
		4 => 'application/x-shockwave-flash'
	);

	// Prüfung, ob die angegebene Datei existiert und lesbar ist
	if( !file_exists($filepath) || !is_file($filepath) !is_readable($filepath) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true);
		exit;
	}

	// Prüfung, ob es sich bei der angegebenen Datei um eine Grafikdatei handelt
	if( ($info = getimagesize($filepath)) !== false || in_array($info[2], $mediatypes) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 406 Not Acceptable', true);
		exit;
	}

	// Setzen des richtigen Media-Typs und des Dateiinhalts
	header('Content-Type: '.$mediatypes[$info[2]], true);
	echo file_get_contents($filepath);
	exit;

?>
Dies setzt jedoch voraus, dass sich die Grafikdatei lokal auf dem Webserver befindet.
 
Gumbo hat gesagt.:
Dies setzt jedoch voraus, dass sich die Grafikdatei lokal auf dem Webserver befindet.
Was auch bei fopen() der Fall ist, auch wenn es, wenn allow_url_fopen=on ist, auch mit URLs genutzt werden kann. Ich rate aber absolut davon ab ueberhaupt an solche Aktionen zu denken.
 

Neue Beiträge

Zurück