Bij onderstaand script is het de bedoeling dat mensen kunnen klikken op bijvoorbeeld map1 en dat dan door een post de coordinaten van de geklikte area worden doorgegeven. Op dit punt moet dan een computer geplaatst worden en deze afbeelding moet dan terug weergegeven worden als <img src='./img/new.png' border='0'/> zodat hierrond nog enige extra html geplaatst kan worden. Blijkbaar zit er ergens nog een fout in want hij heeft de foutmelding: The image ... cannot be displayed because it contains errors.
Blijkbaar kan ik wel de nieuwe map opslaan als new.png en staan hier geen errors in.

Wat doe ik mis?

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$dest_x=$_POST['dest_x'];
$dest_y=$_POST['dest_y'];
$plan = imagecreatefrompng('./img/map1.png');
if ($plan === false) {
return false;
}
//$computer = imagecreatetruecolor(16,16);
$computer = imagecreatefromgif('./img/computer.gif');
if ($computer === false) {
return false;
}
$computer_width = imagesx($computer);
$computer_height = imagesy($computer);
imagecopy($plan, $computer, ($dest_x-($computer_width/2)), ($dest_y-($computer_height/2)), 0, 0, 16, 16);
header("Content-Disposition: filename=" . $plan);
header('Content-type: image/png');
$test = imagepng($plan,'./img/new.png',9);
//imagepng($plan);
imagedestroy($plan);
imagedestroy($computer);
echo '<img src="./img/new.png" border="0" />';
//echo '<img src="data:image/png;base64,'. base64_encode($plan) . '" alt="" />';
} else {
echo "<form action='' method='post'>
<input type='image' alt='map' src='./img/map1.png' name='dest' style='cursor:crosshair;'/>
</form>";
}
?>
Je creëert een afbeelding die je wilt tonen, en in dezelfde afbeelding stop je HTML.

Dat gaat niet werken he.
Je genereert een afbeelding. Dan kan je geen HTML of andere output gebruiken.
Hoe kan ik dan de afbeelding genereren en opslaan waarna ik ze toon met wat extra uitleg bij?
Maak een aparte tussenstap (na POSTen) waarin je een plaatje genereert met een random naam die je ergens wegschrijft, vervolgens onthoud je deze locatie via een sessie ofzo, daarna kun je mogelijk weer terugkeren naar het formulier.

Is er geen data ingesteld in je sessie toon je de oorspronkelijke afbeelding, en anders de gegenereerde afbeelding. Je zult dan ook moeten nadenken over een manier om de gegenereerde plaatjes op te schonen, bijvoorbeeld wanneer ze ouder zijn dan een dag ofzo - mits van toepassing.

Verdeel en heers - deel zaken op in verschillende op zichzelf staande stappen.
Thomas, waarom een tussen stap en gaan klooien met sessies?? Er word al een afbeelding aangemaakt in het script van de topic starter. Die word namelijk al weggeschreven naar "./img/new.png".. Oftewel die kan hij gewoon met "echo '<img src="./img/new.png" border="0" />';" aanroepen (wat de topic starter al doet). Hij hoeft alleen de headers te verwijderen en dan zou hij het al moeten doen.
Mja en hoe gaat dat werken als meerdere gebruikers dat doen? De gegenereerde afbeelding lijkt mij uniek (afhankelijk van waar wordt geklikt). Dus moeten deze afbeeldingen onder aparte bronnen worden opgeslagen en zal er op een of andere manier onthouden moeten worden wie welke afbeelding heeft gegenereerd.
Tevens:
is het de bedoeling dat mensen (noot: meervoud) kunnen klikken

Hoe kan ik dan de afbeelding genereren en opslaan

De topicstarter lijkt dit te willen doen.

EDIT: alternatief: je geeft de coordinaten door via de URL, dan zou je on-the-fly een afbeelding kunnen genereren. Maar de vraag is/blijft of deze afbeelding op een of andere manier relevant is en blijft zodat er toch een noodzaak is om deze ergens in een permanentere vorm op te slaan. Dit kan ik niet opmaken uit het relaas van de topicstarter.

Reageren