Ik kan niet vinden welke headers ik moet gebruiken om een image te laden met readfile().
Heb nu dit, maar dit geeft alleen maar tekens terug:

<?php
				echo '<div class="flow">';
				$foto = ($album.'/thumbs/klein_'.$files[$rand]);
				if (file_exists) {		
					header('Content-type: image/jpeg');
					readfile ($foto);
				}
				echo '<br>';
?>

Met een var_dump $foto heb ik gecontroleerd dat het juiste bestand wordt opgehaald en dit klopt. Dus ik neem aan dat ik niet voldoende header informatie meegeef, maar ik krijg niet gevonden wat dat moet zijn.
Je kan aan de hand van de extentie ([php]array_pop[/php]) bepalen welke mime-type je in de [php]header[/php] je moet gebruiken, bij welk bestand.

Zie ook dit overzicht.

Wat je nu doet kan niet. Je kunt niet middenin een HTML document de inhoud van een plaatje echoën. Je moet hiervoor gewoon zoals anders een img tag plaatsen die naar een script verwijst, welke de inhoud van je plaatje teruggeeft. Maar dat lijkt in dit geval zinloos, omdat je toch alleen rauwe data teruggeeft en verder geen bewerkingen uitvoert.
Dus: gewoon een img tag gebruiken naar je bestand, zo eenvoudig is het.
die combi kan niet.

Je geeft ofwel html weer, en dan gebruik je een <img src="abc.jpg">
of je geeft een binaire data weer met de juiste header:

voorbeeld:

<div>
  <img src="plaatje.php">
</div>


en in plaatje.php:
<?php
$foto = 'foobar.jpg';
if (file_exists($foto)) {
header('Content-type: image/jpeg');
readfile ($foto);
}
?>

[size=xsmall]Toevoeging op 26/01/2016 17:20:19:[/size]

eventueel kun je dit (om het wat zinniger te maken) uitbreiden met een controle of user wel toegang heeft tot de plaatjes en de plaatjes dan buiten de document root te plaatsen
Wat ben zegt. Een bestand maken (image.php) die de afbeeldingen ophaalt. En dat PHP-script netjes in HTML embedden:


<img src="image.php" alt="Een afbeelding!" />
Oké. Ik snap inmiddels hoe het werkt. Dank.
Nou nog juist implementeren, dus ga nog even verder puzzelen.

Reageren