[OPGELOST] handleiding plaatjes maken met php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

J opla

j opla

16/02/2017 13:09:02
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

29/11/2020 15:11:56
 
Ward van der Put
Moderator

Ward van der Put

16/02/2017 13:56:22
Quote Anchor link
Als je zoekt naar bijvoorbeeld impose image in PHP of watermark in PHP, dan vind je verschillende oplossingen. De meeste gebruiken een variant die hier wordt uitgelegd:

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.
 
J opla

j opla

16/02/2017 14:01:57
Quote Anchor link
Hoi Ward,

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
 
Ward van der Put
Moderator

Ward van der Put

16/02/2017 14:08:51
Quote Anchor link
Hoeveel kleuren heb je? Is die bijvoorbeeld door de gebruiker in te stellen?

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.
 
J opla

j opla

16/02/2017 14:13:11
Quote Anchor link
ik wil een stuk of 20 verschillende kleuren markers (.png) maken met (voorlopig) 5 verschillende plaatjes er op. Dat zou neer komen op het maken van 100 plaatjes. Dus alles wat het flexibeler maakt is welkom.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE HTML>
<html>
<head>
<title><? echo $_SERVER['PHP_SELF'] ?></title>
</head>
<body>
<?php
    $im
= imagecreatefrompng("marker_overlijden.png");
    
    header('Content-Type: image/png');
    
    imagepng($im);
    imagedestroy($im);    
?>

</body>
</html>


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
 
- Ariën -
Beheerder

- Ariën -

16/02/2017 15:34:44
Quote Anchor link
Ik zou eerst een de header op lijn 10 even tijdelijk weghalen/web-commentariseren, als het goed is zie je dan een foutmelding in de vorm van een 'Headers already sent by....'. ;-)

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 -
 
J opla

j opla

16/02/2017 15:40:56
Quote Anchor link
Ja dat scheelt :-): maar ik krijg niet het plaatje dat ik verwachte:http://tmp.planje.info/Screenshot%20-%2016-02-17%20-%2015:37:13.png

Dit is maar een stukje er van ;-)
Gewijzigd op 16/02/2017 15:42:10 door j opla
 
- Ariën -
Beheerder

- Ariën -

16/02/2017 15:43:02
Quote Anchor link
Ik zou eerst maar eens je HTML weghalen uit je code, want dat zijn niet de ingrediënten waaruit een gecomprimeerde afbeelding bestaat.
 
J opla

j opla

16/02/2017 15:45:34
Quote Anchor link
@ Ariën

Het blijft een scherm vol met vreemde tekens ook zonder header en zonder de html code.
 
- Ariën -
Beheerder

- Ariën -

16/02/2017 15:47:37
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    $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.
 
J opla

j opla

16/02/2017 16:17:09
Quote Anchor link
Met header werkt het, zonder header niet. Maar hoe voeg je het nou in een document met html code in?
 
- Ariën -
Beheerder

- Ariën -

16/02/2017 16:21:35
Quote Anchor link
Logisch, die header is ook nodig, anders zal de browser het niet als een plaatje behandelen. het verwijderen van die header is alleen nuttig voor het debuggen.

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="afbeelding.php" title="Afbeelding">
Gewijzigd op 16/02/2017 16:22:01 door - Ariën -
 
J opla

j opla

16/02/2017 16:25:11
Quote Anchor link
Dat werkt inderdaad, Dank je!

Met de volgende code leg ik de plaatjes op elkaar, imagecopymerge heb ik vervangen voor imagecopy!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


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
 
Ivo P

Ivo P

17/02/2017 10:20:32
Quote Anchor link
<img src="afbeelding.php?type=abc&marker=12" title="Afbeelding">

bijvoorbeeld.

In afbeelding.php moet je dan iets doen op basis van die $_GET['abc'] en $_GET['marker'] (als voorbeeld)
 
J opla

j opla

17/02/2017 10:30:00
Quote Anchor link
Soms is de oplossing zo simpel! Dank voor je reactie!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.