Hallo SiteDealers,
Ik ben bezig met een phpscript dat na de input van de gebruiker verschillende afbeeldingen teruggeeft. Wanneer de input bijvoorbeeld 'Harry' is, worden de afbeeldingen h.png, a.png, r.png, r.png en y.png naast elkaar weergegeven.
Nu wil ik dat er van deze afbeeldingen één afbeelding wordt gemaakt en dat deze ene afbeelding wordt weergegeven in plaats van de aparte afbeeldingen. Hoe krijg ik dit voor elkaar met php?
J. de Boer
- Meerdere afbeeldingen combineren met php
-
20-01-2011, 11:01 #1
- Berichten
- 359
- Lid sinds
- 17 Jaar
Meerdere afbeeldingen combineren met php
-
In de schijnwerper
-
20-01-2011, 11:02 #2
- Berichten
- 488
- Lid sinds
- 15 Jaar
Re: Meerdere afbeeldingen combineren met php
Hallo,
http://php.net/manual/en/ref.image.php
Misschien dat dat je op weg kan helpen?
Groeten,
Tim
-
20-01-2011, 11:11 #3
- Berichten
- 359
- Lid sinds
- 17 Jaar
Re: Meerdere afbeeldingen combineren met php
Hallo Tim,
Bedankt voor je snelle reactie! Ik heb hier al gekeken, maar omdat ik een beginner ben met php, weet ik niet precies waar ik moet beginnen of hoe ik het aan moet pakken.
De afbeeldingen van de letters zijn allemaal 30px breed en 80px hoog. Moet ik eerst een "basisafbeelding" aanmaken van aantalletters * 30px bij 80px en daar vervolgens alle plaatjes van de letters in plakken?
Groeten,
JasperLaatst aangepast door J. de Boer : 20-01-2011 om 11:16
-
20-01-2011, 11:54 #4
- Berichten
- 376
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
Zie http://www.php.net/manual/en/functio...ecopymerge.php
PHP Code:<?php
// Create image instances
$dest = imagecreatefromgif('php.gif');
$src = imagecreatefromgif('php.gif');
// Copy and merge
imagecopymerge($dest, $src, 10, 10, 0, 0, 100, 47, 75);
// Output and free from memory
header('Content-Type: image/gif');
imagegif($dest);
imagedestroy($dest);
imagedestroy($src);
?>
-
20-01-2011, 12:44 #5
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
En dat levert samen in totaal zoiets op;
PHP Code:<?php
$userInput = "harry"; # Straks vervangen met $_POST['input'] of iets dergelijks
$imgWidth = 30 * strlen($userInput); # Geeft de breedte van het te maken plaatje
header("Content-type: image/png");
$im = @imagecreate($imgWidth, 80)
or die("Kon geen nieuw plaatje maken"); # Nieuw plaatje maken met de breedte en 80px hoogte
$bg = imagecolorallocate($im, 0, 0, 0); # Een standaard achtergrondje instellen
# Nu lopen we door de naam
for($i=0; $i<strlen($userInput); $i++) {
$start = $i * 30;
$letter = substr($userInput, $i, 1);
imagecopymerge($im, "path/naar/de/".$letter.".png", $start, 0, 0, 0, 30, 80, 100);
}
imagepng($im, "path/naar/saved/filename.png", 100);
imagedestroy($im);
?>
-
20-01-2011, 13:00 #6
- Berichten
- 359
- Lid sinds
- 17 Jaar
Re: Meerdere afbeeldingen combineren met php
Bedankt voor jullie reacties Peter en Joshua. Ik ga de code van Joshua aanpassen en implementeren en dan zal ik het resultaat hier plaatsen als het gelukt is. Nogmaals dank!
Aanvullend bericht:
Het is me nog niet helemaal gelukt. Hoe roep ik het gemaakte plaatje aan in de html? En wordt dit plaatje opgeslagen op de server?Laatst aangepast door J. de Boer : 20-01-2011 om 13:37 Reden: Automatisch samengevoegd.
-
20-01-2011, 14:05 #7
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
Je moet een map maken op de server en deze schrijfrechten geven.
In de createpng() functie kun je het pad en de naam van het plaatje opgeven. Wat je kunt doen is:
createpng($im, "path/naar/".mktime().rand(99,999).".png", 100);
dan maak je de png aan in de map /path/naar/ met de naam mktime(), dit is een PHP functie die de huidige timestamp terugstuurt, deze is dus zo goed als altijd uniek, en voor de zekerheid nog een getal tussen de 99 en 999 erachter.
en als je createpng($im); en je verplaatst de header() naar boven (dit moest sowieso, sorry.) dan zou hij hem gewoon moeten uitspugen zoals hij dan is en nergens opslaan.
-
20-01-2011, 14:41 #8
- Berichten
- 359
- Lid sinds
- 17 Jaar
Re: Meerdere afbeeldingen combineren met php
De volgende code staat onder het formulier dat wordt ingevuld. De afhandeling van het formulier staat dus op dezelfde pagina. Wanneer ik dit probeer, wordt het plaatje niet weergegeven.
PHP Code:<?php
if ( isset($naam) && ereg("^[a-zA-z]+$", $naam) ) {
$input = strtolower($naam);
$length = strlen($input);
$imgWidth = 30*$length; # Geeft de breedte van het te maken plaatje
$im = @imagecreate($imgWidth, 80)
or die("Kon geen nieuw plaatje maken"); # Nieuw plaatje maken met de breedte en 80px hoogte
$bg = imagecolorallocate($im, 0, 0, 0);
for ( $i=0 ; $i<$length ; $i++ ) {
$start = $i * 30;
if (file_exists("img/letters/".$input[$i].$input[$length-1-$i].".png")) {
imagecopymerge($im, "img/letters/".$input[$i].$input[$length-1-$i].".png", $start, 0, 0, 0, 30, 80, 100);
}
else {
imagecopymerge($im, "img/empty.png", $start, 0, 0, 0, 30, 80, 100);
}
}
}
createpng($im, "img/output/".mktime().rand(99,999).".png", 100);
imagedestroy($im);
?>
-
20-01-2011, 15:28 #9
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
Even de filename in een variabel zetten en we kunnen hem daarna gebruiken:
PHP Code:<?php
if ( isset($naam) && ereg("^[a-zA-z]+$", $naam) ) {
$input = strtolower($naam);
$length = strlen($input);
$imgWidth = 30*$length; # Geeft de breedte van het te maken plaatje
$im = @imagecreate($imgWidth, 80)
or die("Kon geen nieuw plaatje maken"); # Nieuw plaatje maken met de breedte en 80px hoogte
$bg = imagecolorallocate($im, 0, 0, 0);
for ( $i=0 ; $i<$length ; $i++ ) {
$start = $i * 30;
if (file_exists("img/letters/".$input[$i].$input[$length-1-$i].".png")) {
imagecopymerge($im, "img/letters/".$input[$i].$input[$length-1-$i].".png", $start, 0, 0, 0, 30, 80, 100);
}
else {
imagecopymerge($im, "img/empty.png", $start, 0, 0, 0, 30, 80, 100);
}
}
}
$filename = "img/output/".mktime().rand(99,999).".png";
createpng($im, $filename, 100);
imagedestroy($im);
echo '<img src="'.$filename.'" />';
?>
-
20-01-2011, 16:13 #10
- Berichten
- 359
- Lid sinds
- 17 Jaar
Re: Meerdere afbeeldingen combineren met php
Weet je zeker dat de createpng() een functie is? Ik heb hem niet kunnen vinden op PHP.net. Ik heb het ook met imagepng() geprobeerd, maar dan krijg ik een melding dat de afbeelding niet kan worden weergegeven omdat deze fouten bevat.
-
20-01-2011, 17:16 #11
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
http://www.php.net/manual/en/function.imagepng.php
imagepng ipv createpng, sorry! :)
-
21-01-2011, 21:36 #12
- Berichten
- 359
- Lid sinds
- 17 Jaar
Re: Meerdere afbeeldingen combineren met php
Het is me nog steeds niet helemaal gelukt. Ik ga de pagina even opnieuw opbouwen en als het probleem zich dan weer voordoet, plaats ik een reactie in dit topic.
-
21-01-2011, 21:40 #13
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Meerdere afbeeldingen combineren met php
Ik kan je ook niet garanderen dat het helemaal werkt, maar het zou wel ruwweg de goede opzet moeten zijn.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic