php transparant image

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Ik ben al de hele dag op zoek naar hoe ik met php (v4.4.x) met de gd library het volgende kan bereiken: link. Dus aan de onderkant een fadende gespiegelde rand. Ik heb het zover dat de gespiegelde rand eronder zit. Alleen het doorzichtig maken lukt dus niet. In php 5 zou dit met wellicht met de imagefilter functie kunnen. Maar deze is niet beschikbaar in v4. Iemand enig idee? De achtergrond is trouwens altijd wit.

Acties:
  • 0 Henk 'm!

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

http://nl2.php.net/manual/en/function.imagealphablending.php :)

Misschien dat dat je wat opweg helpt? :)

[ Voor 25% gewijzigd door eamelink op 04-03-2007 22:42 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Heb je een egale ondergrond? Dan heeft dit helemaal niks met transparantie te maken, maar is het gewoon een kwestie van faden naar die kleur (in het geval van het voorbeeld plaatje is dat wit).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Ik noem inderdaad "doorzichtig", maar bedoel zoals ik ook al zei, een fadende rand. Blending lijkt inderdaad een goeie opl, maar dit werkt niet, de onder en bovenrand worden gewoon wit. Heb voor output geprobeerd met png en gif. Hieronder mijn code:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php

    /*
     *    Type header zetten
     */
    header( "Content-type: image/png" );

    /*
     *    Mirror funtie
     */
    function imagemirror( $input_image )
    {
       $width = imagesx( $input_image );
       $height = imagesy( $input_image );

       $output_image = imagecreatetruecolor( $width, $height );
       $y = 1;

       while ( $y < $height )
       {
           for ( $i = 1; $i <= $width; $i++ )
           {
               imagesetpixel( $output_image, $i, $y, imagecolorat( $input_image, ( $i ), ( $height - $y ) ) );
           }

           $y = $y + 1;
       }

       return $output_image;
    }

    /*
     *    Settings
     */
    $border = 50;

    /*
     *    Inladen foto
     */
    $filename = "awa.jpg";
    $im_original = imagecreatefromjpeg( $filename );
    $width = imagesx( $im_original );
    $height = imagesy( $im_original );

    /*
     *    Creeren boven en onderrand
     */
    $im_lowerborder = imagecreatetruecolor( $width, $border );
    $im_upperborder = imagecreatetruecolor( $width, $border );

    /*
     *    Plaatje roteren en transparant maken
     */
    $im_mirrored = imagemirror( $im_original );

    /*
     *    Boven en onderrand vullen
     */
    imagecopy( $im_lowerborder, $im_mirrored, 0, 0, 0, 0,               $width, $border );
    imagecopy( $im_upperborder, $im_mirrored, 0, 0, 0, $height-$border, $width, $border );

    /*
     *    Truecolor randen blenden
     */
    imagealphablending( $im_lowerborder, TRUE );
    imagealphablending( $im_upperborder, TRUE );

    /*
     *    Nieuwe plaatje samenstellen
     */
    $im_new = imagecreatetruecolor( $width, $height + ( 2 * $border ) );

    imagecopy( $im_new, $im_upperborder,  0, 0,               0, 0, $width, $border );
    imagecopy( $im_new, $im_original,     0, $border,         0, 0, $width, $height );
    imagecopy( $im_new, $im_lowerborder,  0, $border+$height, 0, 0, $width, $border );

    /*
     *    Plaatje retourneren
     */
    imagepng( $im_new );

    /*
     *    Plaatjes destroyen
     */
    imagedestroy( $im_original );
    imagedestroy( $im_mirrored );
    imagedestroy( $im_upperborder );
    imagedestroy( $im_lowerborder );
    imagedestroy( $im_new );

?>


Ik neem aan dat het geen probleem is dat ik initieel een jpg file inlees, aangezien ik deze later copy naar een truecolor image?