Ik heb een code die ik gebruik om een tekst op een plaatje te zetten en dankte presenteren. Dat gaat goed. Nu wil ik de plaatjes op een eerder moment genereren, zodat de images getoond kunnen worden.


<?php
// Print two names on the picture, which accepted by query string parameters.
// <img src="createImage.php?n1=winter&n2=seizoen&n2=rood" />


//tekst 1, boven
$n1 = $_GET['n1'];
//tekst 2, onder
$n2 = $_GET['n2'];
//achtergrondbeeld
$n3 = $_GET['n3'];

Header ("Content-type: image/jpeg");

switch ($n3):
     case "rood":
     $image = imageCreateFromJPEG("images/rood.jpg");
     break;
     case "blauw":
     $image = imageCreateFromJPEG("images/blauw.jpg");
     break;
     case "groen":
     $image = imageCreateFromJPEG("images/groen.jpg");
     break;
     default:
     $image = imageCreateFromJPEG("images/basis.jpg");
endswitch;

$color = ImageColorAllocate($image, 255, 255, 255);
$color1 = ImageColorAllocate($image, 169, 169, 169);

//  Wrtie text to horizontal alignment for the names.
imagettftext($image, 70, 0, 150, 185, $color, 'font/HermesRegular.ttf', $n1);
imagettftext($image, 40, 0, 500, 240, $color1, 'font/HermesRegular.ttf', $n2);
// nu opslaan
// in dite geval als file anders naam NULL geven
imagejpeg($image, "images/'.$n1.'.jpg", 80);
// vernietig file in geheugen
ImageDestroy($image);
?>


Nu wil ik er dus graag een functie van maken. Wie kan mij helpen?
Hoi Ariën,
Ik loop vast omdat de functie terug moet gaan, een return. En dat eindigt volgens de voorbeelden met een vergelijking. Maar ik wil niets vergelijken. Dat snap ik even niet.

[size=xsmall]Toevoeging op 28/08/2017 17:39:17:[/size]

Ik had dit ervan gemaakt, maar weet niet of dit goed is, op deze manier. Graag een kennersblik.

function maakafbeelding($n1, $n2, $n3) {

// Header ("Content-type: image/jpeg");

switch ($n3):
     case "rood":
     $image = imageCreateFromJPEG("images/rood.jpg");
     break;
     case "blauw":
     $image = imageCreateFromJPEG("images/blauw.jpg");
     break;
     case "groen":
     $image = imageCreateFromJPEG("images/groen.jpg");
     break;
     default:
     $image = imageCreateFromJPEG("images/basis.jpg");
endswitch;

$color = ImageColorAllocate($image, 255, 255, 255);
$color1 = ImageColorAllocate($image, 169, 169, 169);

//  Wrtie text to horizontal alignment for the names.
imagettftext($image, 70, 0, 150, 185, $color, 'font/HermesRegular.ttf', $n1);
imagettftext($image, 40, 0, 500, 240, $color1, 'font/HermesRegular.ttf', $n2);
// nu opslaan
imagejpeg($image, 'images/'.$n1.'.jpg', 80);
// vernietig file in geheugen
ImageDestroy($image);
return;
}



Ziet er op sich goed uit. Onthoud wel dat je dit in een apart bestand moet uitvoeren die de afbeelding toont. Uiteindelijk roep je die dus in je img-tag van je HTML aan.
Ik wilde de afbeelding maken als een formulier ingevuld is. Dan wordt de afbeelding weggeschreven, en vervolgens getoond. De oude php toonde direct de afbeelding. Maar nu stopt alles na de functie. Er wordt wel een bestand weggeschreven, maar de code gast niet verder. Tevens zie ik een klein blokje bovenin het scherm. Moet hier geen return in de functie komen?
Comment je header, en kijk eens of je foutmeldingen krijgt.
De header hoort er sowieso niet. Je bent niet aan het weergeven, maar aan het opslaan.
Ik heb de header gecommented, en ik heb return; toegevoegd. En nu werk het.

Dank dank. Code pas ik hierboven aan. Wellicht willen anderen dit ook gebruiken.

Reageren