Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

imagecreatefrompng wil niet transparant blijven

Pagina: 1
Acties:
  • 389 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
[center][PHP]Imagecreatefrompng background blijft niet transparant[/center]

Beste leden,

Ik maak een png afbeelding aan vanaf een bestaande png met transparante achtergrond met behulp van php gd library. alles gaat goed maar de achtergrond blijft niet transparant, ze wordt ingekleurd, hoe komt dit? thx ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
error_reporting(E_ALL + E_STRICT);
ini_set( "display_errors", 1);

header("Content-type: image/png");
header('Content-Disposition: attachment; filename="button.png"');

class Generate {
    
    private $button;
    
    public function __construct($font,$size,$image,$color,$text,$align){
        
        $this->constructImage($font,$size,$image,$color,$text,$align);
        return $this->button;
    }
    
    private function constructImage($font,$size,$image,$color,$text,$align){
                        
        $button = imagecreatefrompng($image);
        $boundingbox = imagettfbbox($size,0,$font,$text);
        switch ($align) {
            case "left":
                $x = 20;
                break;
            case "center":
                $x = (imagesx($button)-($boundingbox[2]))/2;
                break;
            case "right":
                $x = imagesx($button) -($boundingbox[2])-10;
                break;
            default:
                break;
        }
        $y = imagesy($button) - (imagesy($button)-$size)/2;
        $col = imagecolorallocate($button,hexdec($color[1]).hexdec($color[2]),hexdec($color[3]).hexdec($color[4]),hexdec($color[5]).hexdec($color[6]));
                
        imagettftext($button,$size,0,$x,$y,$col,$font,$text);
        
        readfile($this->button = imagepng($button));
        imagedestroy($button);      
    }
}

?>


live: demo

[ Voor 11% gewijzigd door Verwijderd op 16-09-2007 21:23 . Reden: Titel niet ok ]


  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 18-11 12:58

kokx

WIN

Gooi er eerst eens
code:
1
[code=php] en [/code]
omheen. En leg daarna eens duidelijk uit wat je er al tegen hebt geprobeerd.

Edit: Mischien een idee om de functie imagecolortransparent te gebruiken.

[ Voor 37% gewijzigd door kokx op 16-09-2007 21:18 ]


Verwijderd

Topicstarter
Sommigen hebben mij imagecolortransparent aangewezen, ik heb dit toegpast maar ik had 0 verschil. In het begin werkte ik zelfs met gifs, dat ging goed maar de tekstkleur was nooit hetgeen ik opgaf. Het is steeds een probleem met de kleuren :s

  • Walance
  • Registratie: September 2005
  • Laatst online: 24-11 21:48

Walance

Hm.. wat zal ik hier schrijven

ik weet niet zeker of dit is wat je bedoel, maar je kunt een kleur als transparent instellen met dit:
PHP:
1
2
$cBackground = imagecolorallocate($iPlaatje, 255, 255, 255);
imagecolortransparent($iPlaatje, $cBackground);

dan als 2e parameter van imagecolorallocate de kleur die je transparent wilt hebben invullen

Verwijderd

Topicstarter
Conquerer schreef op zondag 16 september 2007 @ 21:21:
ik weet niet zeker of dit is wat je bedoel, maar je kunt een kleur als transparent instellen met dit:
PHP:
1
2
$cBackground = imagecolorallocate($iPlaatje, 255, 255, 255);
imagecolortransparent($iPlaatje, $cBackground);

dan als 2e parameter van imagecolorallocate de kleur die je transparent wilt hebben invullen
Het probleem is dat ik niet van voorhanden weet welke kleur hij van de transparent background maak, zie de live demo url voor ondervindingen ;)

  • Walance
  • Registratie: September 2005
  • Laatst online: 24-11 21:48

Walance

Hm.. wat zal ik hier schrijven

Verwijderd schreef op zondag 16 september 2007 @ 21:24:
[...]


Het probleem is dat ik niet van voorhanden weet welke kleur hij van de transparent background maak, zie de live demo url voor ondervindingen ;)
ohh, sorry, dat linkje had ik over het hoofd gezien 8)7

misschien dat je imagecolorat kunt gebruiken om te kijken welke kleur er transparant gemaakt moet worden? Dan moet die kleur wel bij elk plaatje op dezelfde plek staan denk ik.

Verwijderd

Topicstarter
Conquerer schreef op zondag 16 september 2007 @ 21:38:
[...]

ohh, sorry, dat linkje had ik over het hoofd gezien 8)7

misschien dat je imagecolorat kunt gebruiken om te kijken welke kleur er transparant gemaakt moet worden? Dan moet die kleur wel bij elk plaatje op dezelfde plek staan denk ik.
Helaas wel, ik moet coördinaten opgeven en aangezien het verschillende buttons zullen zijn, meer dan in het voorbeeld, dan is deze functie verwaarloosbaar.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Je probeert een PNG24 in te lezen met alpha's maar volgens mij ondersteund GD dat helemaal niet. Misschien moet je nconvert of imagemagick eens proberen.

Verwijderd

Topicstarter
Ik zal daar even voor kijken
Pagina: 1