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.
http://nl2.php.net/manual/en/function.imagealphablending.php 
Misschien dat dat je wat opweg helpt?
Misschien dat dat je wat opweg helpt?
[ Voor 25% gewijzigd door eamelink op 04-03-2007 22:42 ]
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'
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:
Ik neem aan dat het geen probleem is dat ik initieel een jpg file inlees, aangezien ik deze later copy naar een truecolor image?
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?