[OPGELOST] handleiding plaatjes maken met php
Eigenlijk misschien al meer een gevorderd vraagje dan een beginners vraag, maar is er ergens een nederlandstalige handleiding wat om plaatjes te maken met php.
Ik zie in de documentatie verschillende mogelijkheden om met php plaatjes te manipuleren. Ik zou willen weten of het mogelijk is om een functie te schrijven die van één van de plaatjes de voorgrond kleur aan past en dan een ander plaatje er overheen zetten?
Of om nog duidelijker te zijn wil ik markers maken om met leaflet op een OSM kaart te zetten. De markers moeten verschillende kleuren kunnen krijgen en er moet een symbooltje op de marker te maken zijn. Het symbooltje is in feite een ander .png bestandje.
Alvast bedankt voor een reactie
Gewijzigd op 17/02/2017 15:33:24 door J opla
http://stackoverflow.com/questions/1481421/superimposing-images-in-php
Technisch het makkelijkst: een deels doorzichtige PNG (in de beschikbare kleurvarianten) boven op een ondoorzichtige achtergrond plaatsen.
Dank voor je reactie, maar weet je misschien ook iets in het Nederlands?
Quote:
Technisch het makkelijkst: een deels doorzichtige PNG (in de beschikbare kleurvarianten) boven op een ondoorzichtige achtergrond plaatsen.
Is de kleur ook te wijzigen met php of is dat een stap te hoog gegrepen?
Gewijzigd op 16/02/2017 14:02:11 door j opla
Als je een beperkt aantal standaardkleuren hebt, zou ik voor elke kleur een aparte PNG maken. Dan krijg je de natuurlijkste kleuren en kleurovergangen.
Maar met een monochrome bitmap zou je inderdaad zelf ook de voorgrondkleur moeten kunnen veranderen. Bitmaps gebruiken namelijk een kleurindex: in het beeld staat "deze pixel heeft kleur x" en in de index staat vervolgens "kleur x is deze kleur rood". Je hoeft daarom alleen de index te wijzigen. Hoe weet ik niet precies, maar je moet de oplossing in die richting zoeken.
Toevoeging op 16/02/2017 15:32:14:
hmmm, de eerste test is niet erg veelbelovend. Ik heb de code uit de documentatie over genomen:
Code (php)
Ik krijg de volgende foutmelding:
Quote:
<img src="view-source:http://xxxxxxxxxxx/test_img.php" alt="De afbeelding ‘view-source:http://xxxxxxxxx/test_img.php’ kan niet worden weergegeven, omdat deze fouten bevat.">
Is mijn plaatje corrupt, of is mijn code niet goed?
Gewijzigd op 16/02/2017 15:33:31 door j opla
Een plaatje is immers niet voorzien van HTML, dus dan zou je alle HTML dus moeten strippen. Je wilt een plaatje genereren, dus die zul je dan ook met de img-tag in HTML moeten aanroepen.
Gewijzigd op 16/02/2017 15:41:34 door - Ariën -
Ik zou eerst maar eens je HTML weghalen uit je code, want dat zijn niet de ingrediënten waaruit een gecomprimeerde afbeelding bestaat.
Het blijft een scherm vol met vreemde tekens ook zonder header en zonder de html code.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$im = imagecreatefrompng("marker_overlijden.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
$im = imagecreatefrompng("marker_overlijden.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
This is all you need ;-)
Als dit niet werkt, zou ik de header even uitschakelen om te kijken of je een foutmelding krijgt.
Met header werkt het, zonder header niet. Maar hoe voeg je het nou in een document met html code in?
De afbeelding die je genereert is een apart script, welke geen andere output mag bevatten dan waaruit de afbeelding bestaat. Als je het script heb opgeslagen als afbeelding.php, dan kan je het met deze HTML-code op een andere pagina ophalen:
Gewijzigd op 16/02/2017 16:22:01 door - Ariën -
Met de volgende code leg ik de plaatjes op elkaar, imagecopymerge heb ik vervangen voor imagecopy!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$im = imagecreatefrompng("marker_aqua.png");
$im2 = imagecreatefrompng("marker_overlijden.png");
imagecopy($im, $im2, 0, 0, 0, 0, 350, 566);
imagesavealpha($im , true);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
$im = imagecreatefrompng("marker_aqua.png");
$im2 = imagecreatefrompng("marker_overlijden.png");
imagecopy($im, $im2, 0, 0, 0, 0, 350, 566);
imagesavealpha($im , true);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
Toevoeging op 16/02/2017 17:24:42:
Kan ik ook een function maken van het bestand van het plaatje? Ofwel ik wil het plaatje in de html aanroepen maar dan wil ik aangeven welke plaatjes er samengevoegd moeten worden. Want die 2 samen te voegen plaatjes variëren. Ofwel, kan ik de bron plaatjes vervangen door een variable op de één op andere manier?
Gewijzigd op 16/02/2017 17:27:13 door j opla
bijvoorbeeld.
In afbeelding.php moet je dan iets doen op basis van die $_GET['abc'] en $_GET['marker'] (als voorbeeld)
Soms is de oplossing zo simpel! Dank voor je reactie!