Avatar billede andreas13_fam Nybegynder
11. marts 2009 - 21:41 Der er 8 kommentarer og
1 løsning

dynamisk png billede

Jeg har fået den lille opgave at lave et dynamisk png billede, til en kontakt liste.
Resultatet ses her: http://www.a-mweb.dk/Ogame/Kontaktliste/Kontak.php
Som det måske kan ses skulle farven meget gerne være hvid og der skulle meget gerne være nogle æøå, begge dele er noget jeg har problemer med.

PHP fil

<?php
header("Content-type: image/png; charset=utf-8");

$get_logfil = file_get_contents("logfil.txt");
if (preg_match("/#1a:([^#]*)#1b:([^#]*)#1c:([^#]*)#2a:([^#]*)#2b:([^#]*)#2c:([^#]*)#3a:([^#]*)#3b:([^#]*)#3c:([^#]*)#4a:([^#]*)#4b:([^#]*)#4c:([^#]*)#5a:([^#]*)#5b:([^#]*)#5c:([^#]*)#6a:([^#]*)#6b:([^#]*)#6c:([^#]*)/", $get_logfil, $regs))
{
$billede = imagecreatefrompng("image.png");
$type = 3;
$farve = imagecolorallocate($billede, 255, 255, 255);
imagestring($billede, $type, 132, 20, $regs['1'], $farve);
imagestring($billede, $type, 244, 20, $regs['2'], $farve);
imagestring($billede, $type, 427, 20, $regs['3'], $farve);
imagestring($billede, $type, 132, 37, $regs['4'], $farve);
imagestring($billede, $type, 244, 37, $regs['5'], $farve);
imagestring($billede, $type, 427, 37, $regs['6'], $farve);
imagestring($billede, $type, 132, 54, $regs['7'], $farve);
imagestring($billede, $type, 244, 54, $regs['8'], $farve);
imagestring($billede, $type, 427, 54, $regs['9'], $farve);
imagestring($billede, $type, 132, 71, $regs['10'], $farve);
imagestring($billede, $type, 244, 71, $regs['11'], $farve);
imagestring($billede, $type, 427, 71, $regs['12'], $farve);
imagestring($billede, $type, 132, 88, $regs['13'], $farve);
imagestring($billede, $type, 244, 88, $regs['14'], $farve);
imagestring($billede, $type, 427, 88, $regs['15'], $farve);
imagestring($billede, $type, 132, 105, $regs['16'], $farve);
imagestring($billede, $type, 244, 105, $regs['17'], $farve);
imagestring($billede, $type, 427, 105, $regs['18'], $farve);
imagepng($billede);
imagedestroy($billede);
}
?>
Avatar billede majbom Novice
11. marts 2009 - 22:05 #1
citat fra php.net:

Note: The first call to imagecolorallocate() fills the background color in palette-based images

så hvis du lige smider en linje ind før din $farve = imagecolorallocate(...);

med f.eks.

$bg = imagecolorallocate($billede,0,0,0);

burde det virke

(tror jeg - har aldrig arbejdet med dette før...)
Avatar billede majbom Novice
11. marts 2009 - 22:08 #2
og filen er encodet som utf8?
Avatar billede jakobdo Ekspert
12. marts 2009 - 09:58 #3
Jeg tror du skal benytte imagettftext i stedet for imagestring.
Avatar billede andreas13_fam Nybegynder
12. marts 2009 - 14:43 #4
Ja imagettftext er meget bedre end imagestring, og så kan jeg også skrive arial. Men jeg kan stadig ikke få farven hvid.

<?php
header("Content-type: image/png");

$get_logfil = file_get_contents("logfil.php");
if (preg_match("/#1a:([^#]*)#1b:([^#]*)#1c:([^#]*)#2a:([^#]*)#2b:([^#]*)#2c:([^#]*)#3a:([^#]*)#3b:([^#]*)#3c:([^#]*)#4a:([^#]*)#4b:([^#]*)#4c:([^#]*)#5a:([^#]*)#5b:([^#]*)#5c:([^#]*)#6a:([^#]*)#6b:([^#]*)#6c:([^#]*)/", $get_logfil, $regs))
{
$billede = imagecreatefrompng("image.png");
$bg = imagecolorallocate($billede, 0, 0, 0);
$type = 'arial.ttf';
$farve = imagecolorallocate($billede, 255, 255, 255);
$size = 10;
imagettftext($billede, $size, 0, 132, 31, $farve, $type, $regs['1']);
imagettftext($billede, $size, 0, 244, 31, $farve, $type, $regs['2']);
imagettftext($billede, $size, 0, 427, 31, $farve, $type, $regs['3']);
imagettftext($billede, $size, 0, 132, 48, $farve, $type, $regs['4']);
imagettftext($billede, $size, 0, 244, 48, $farve, $type, $regs['5']);
imagettftext($billede, $size, 0, 427, 48, $farve, $type, $regs['6']);
imagettftext($billede, $size, 0, 132, 65, $farve, $type, $regs['7']);
imagettftext($billede, $size, 0, 244, 65, $farve, $type, $regs['8']);
imagettftext($billede, $size, 0, 427, 65, $farve, $type, $regs['9']);
imagettftext($billede, $size, 0, 132, 82, $farve, $type, $regs['10']);
imagettftext($billede, $size, 0, 244, 82, $farve, $type, $regs['11']);
imagettftext($billede, $size, 0, 427, 82, $farve, $type, $regs['12']);
imagettftext($billede, $size, 0, 132, 99, $farve, $type, $regs['13']);
imagettftext($billede, $size, 0, 244, 99, $farve, $type, $regs['14']);
imagettftext($billede, $size, 0, 427, 99, $farve, $type, $regs['15']);
imagettftext($billede, $size, 0, 132, 116, $farve, $type, $regs['16']);
imagettftext($billede, $size, 0, 244, 116, $farve, $type, $regs['17']);
imagettftext($billede, $size, 0, 427, 116, $farve, $type, $regs['18']);
imagepng($billede);
imagedestroy($billede);
}
?>
Avatar billede jakobdo Ekspert
12. marts 2009 - 18:32 #5
Hvor er det du vil have farven hvid ?

Kunne du ikke bare rette dit billede: http://www.a-mweb.dk/Ogame/Kontaktliste/image.png
Avatar billede andreas13_fam Nybegynder
12. marts 2009 - 19:03 #6
Jeg vil gerne have teksten hvid, det er lidt svært at lave i image.png
Avatar billede jakobdo Ekspert
12. marts 2009 - 20:49 #7
Fejlen er dit png billede er 8bit.
Prøv at gem det som 24bit, så virker det. :o)
Avatar billede majbom Novice
13. marts 2009 - 08:20 #8
-> andreas - går ud fra at det hjalp at gemme det som 24bit?
Avatar billede jakobdo Ekspert
13. marts 2009 - 10:03 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester