In het verleden zijn er al verscheidene topics geweest over werken met transparantie. Veelal ging het dan om het maken van transparante gaten in plaatjes, wat uiteindelijk lukte. Ik ben al een aantal dagen bezig om ook iets met transparantie te doen, maar dan in combinatie met de imagerotate functie van de gd library.
Ook hier zijn eerder topics geweest, aangezien men toendertijd hetzelfde probleem had als ik nu: na het roteren blijven er zwarte vlakken over op de plekken die niet door het plaatje gebruikt worden. Ter demonstratie een screenshot van een gedraaid plaatje:

Nu heeft de functie imagerotate een aantal argumenten, waarbij de laatste is voor de achtergrondkleur die over blijft. Dat is dus precies hetgeen wat nu door zwarte vlakken opgevuld wordt. Het gewoon simpel 'aanmaken' van een transparante kleur was al redelijk puzzelen, aangezien er niet iets is als een color() functie. Met hulp van de topics uit het verleden ben ik tot de volgende code gekomen:
Deze wordt aangeroepen vanuit een ander bestand alszijnde een image, wat gewoon goed werkt. Het probleem is dus dat ik die transparantie er niet in krijg. Dat is ook de reden waarom het uiteindelijk een .png bestand wordt, ik heb hier en daar gelezen dat dat kon schelen op het moment dat je transparantie wilt verwerken in plaatjes en die online wilt laten zien. Prachtig, maar het moge duidelijk zijn dat ook dat hier niet echt wilde helpen.
Is er ondertussen al iets veranderd in de gd library wat dit mogelijk moet maken, of heb ik gewoon vette pech? Zou jammer zijn... ben zulke leuke dingen van plan
Ook hier zijn eerder topics geweest, aangezien men toendertijd hetzelfde probleem had als ik nu: na het roteren blijven er zwarte vlakken over op de plekken die niet door het plaatje gebruikt worden. Ter demonstratie een screenshot van een gedraaid plaatje:

Nu heeft de functie imagerotate een aantal argumenten, waarbij de laatste is voor de achtergrondkleur die over blijft. Dat is dus precies hetgeen wat nu door zwarte vlakken opgevuld wordt. Het gewoon simpel 'aanmaken' van een transparante kleur was al redelijk puzzelen, aangezien er niet iets is als een color() functie. Met hulp van de topics uit het verleden ben ik tot de volgende code gekomen:
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
| // Variables $filename = 'image.jpg'; $degrees = 20; $old_width = 1704; $old_height = 2272; $new_width = 90; $new_height = 120; // Resample $new_image = imagecreatetruecolor($new_width, $new_height); $old_image = imagecreatefromjpeg($filename); imagealphablending($new_image, false); imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); // Rotate $transparent = imagecolorallocatealpha($new_image, 0, 0, 0, 127); $rotated = imagerotate($new_image, $degrees, $transparent); imagesavealpha($rotated, true); // Output header('Content-type: image/png'); imagepng($rotated); |
Deze wordt aangeroepen vanuit een ander bestand alszijnde een image, wat gewoon goed werkt. Het probleem is dus dat ik die transparantie er niet in krijg. Dat is ook de reden waarom het uiteindelijk een .png bestand wordt, ik heb hier en daar gelezen dat dat kon schelen op het moment dat je transparantie wilt verwerken in plaatjes en die online wilt laten zien. Prachtig, maar het moge duidelijk zijn dat ook dat hier niet echt wilde helpen.
Is er ondertussen al iets veranderd in de gd library wat dit mogelijk moet maken, of heb ik gewoon vette pech? Zou jammer zijn... ben zulke leuke dingen van plan
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.