Geachte iedereen die dit leest,
ik ben al enkele uren bezig met het zoeken naar een oplossing voor mijn probleem.
Wat ik graag zou willen:
Voor een site van een kameraad had ik het idee om zelf een soort van fotolijst te maken waarmee je 3 afbeeldingen opent met PHP en resized en roteert en daarna op een zwarte achtergrond plaats. Daarover heen weer een .png met alpha transparecy die het frame is voor de foto's.
Voorbeeld hoe het zou moeten: http://k0ewl.dnsalias.com/axel
Het script wat ik nu gebruik om de frame.png op een willekeurig gekleurde achtergrond te plakken:
Output van het roteren:
http://www.b2ontwerp.nl/axel/
Output van het script:
http://www.b2ontwerp.nl/axel/blend.php
Het probleem:
De afbeelding wil gewoon niet mergen met de goede alpha transparency.
Wie weet wat er fout gaat, alsjeblieft, meld het even.
ik ben al enkele uren bezig met het zoeken naar een oplossing voor mijn probleem.
Wat ik graag zou willen:
Voor een site van een kameraad had ik het idee om zelf een soort van fotolijst te maken waarmee je 3 afbeeldingen opent met PHP en resized en roteert en daarna op een zwarte achtergrond plaats. Daarover heen weer een .png met alpha transparecy die het frame is voor de foto's.
Voorbeeld hoe het zou moeten: http://k0ewl.dnsalias.com/axel
Het script wat ik nu gebruik om de frame.png op een willekeurig gekleurde achtergrond te plakken:
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
92
93
94
95
96
97
98
99
100
| <? // Content type header('Content-type: image/jpeg'); $images = array(); $image_dir = "./images/upload/"; $per_page = 3; if ($handle = @opendir($image_dir)) { while ( ($file = readdir ($handle)) !== false) { if (is_file ($image_dir.$file)) { if (exif_imagetype ($image_dir.$file) == IMAGETYPE_JPEG) array_push ($images, $file); } } closedir($handle); sort($images); if (sizeof ($images) >= $per_page) { $final_image = imagecreatetruecolor (800, 590); $page = ceil (htmlspecialchars ($_GET['page'])); if ($page < 1 || $page > floor (sizeof ($images) / $per_page) - 1) $page = 1; $degrees = array (15, 330, 5); $position = array (array (41, 36), array(363, 50), array(198, 279)); for ($i = 0; $i < $per_page; $i++) { $image_src = $image_dir.$images[($page * $per_page) - $per_page + $i]; $image_dst = './images/temp/'.$i.'.png'; resize_image ($image_src, $image_dst, 320, 240); $rotated = imagecreatefrompng ($image_dst); $rotated = imagerotate ($rotated, $degrees[$i], 0); $black = imagecolorallocate($rotated, 0x00, 0x00, 0x00); imagecolortransparent ($rotated, $black); $size[0] = imagesx ($rotated); $size[1] = imagesy ($rotated); imagecopymerge ($final_image, $rotated, $position[$i][0], $position[$i][1], 0, 0, $size[0], $size[1], 100); imagedestroy ($rotated); } $frame = './images/frame.png'; $frame = imagecreatefrompng ($frame); imagecopymerge ($final_image, $frame, 0, 0, 0, 0, 800, 590, 100); imagejpeg ($final_image); imagedestroy ($final_image); } } function resize_image($image_src, $image_dst, $width, $height) { $org_size = getimagesize($image_src); $org_width = $org_size[0]; $org_height = $org_size[1]; $extension = strtolower (substr ($image_src, -3)); if ($extension == "jpg") { if (exif_imagetype ($image_src) == IMAGETYPE_JPEG) { $org_id = imagecreatefromjpeg ($image_src); if ($org_width < $org_height) { imagerotate ($image_src, 90, 0); $org_size = getimagesize($image_src); $org_width = $org_size[0]; $org_height = $org_size[1]; } $tgt_width = $width; $procent = $width / $org_width; $tgt_height = $org_height * $procent; $tgt_id = imagecreatetruecolor ($tgt_width, $tgt_height); $tgt_picture = imagecopyresampled ($tgt_id, $org_id, 0, 0, 0, 0, $tgt_width, $tgt_height, $org_width, $org_height); imagepng($tgt_id, $image_dst, 75); } } imagedestroy ($org_id); } ?> |
Output van het roteren:
http://www.b2ontwerp.nl/axel/
Output van het script:
http://www.b2ontwerp.nl/axel/blend.php
Het probleem:
De afbeelding wil gewoon niet mergen met de goede alpha transparency.
Wie weet wat er fout gaat, alsjeblieft, meld het even.
[ Voor 56% gewijzigd door k0ewl op 06-01-2007 18:48 ]
A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."