PDA

View Full Version : [PHP] GD Bug?


satoshi2005
30-01-2007, 14:47
Salve gente,

Ho un problema e non riesco a capire se sono io che sbaglio o se è proprio un problema della libreria GD.

Vi prego di notare la differenza tra:
http://www.satoshi.ch/orologio/prova.php?gradi=44

e:
http://www.satoshi.ch/orologio/prova.php?gradi=45

perché quando i gradi sono >= 45 allora va via la trasparenza?

Codice:

<?php
header("Content-Type: image/png");

$im = imageCreateFromPNG("lancetta_grande_cut.png");
$bgcolor = imageColorAllocateAlpha($im, 0, 0, 0, 127);

$image_rotated = imageRotate($im, ($_GET['gradi'] * (-1)), $bgcolor);

imageAlphaBlending($image_rotated, false);
imageSaveAlpha($image_rotated, true);
imagePNG($image_rotated);
?>


Grazie mille! sato

yorkeiser
30-01-2007, 15:15
Uhm, l'intervallo di trasparenza effettivamente va da -44 a 45° da quel che vedo, e non vedo perchè dovresti avere problemi su altri gradi. Da totale ignorante su tali librerie, mi spieghi cosa dovrebbe fare la

$bgcolor = imageColorAllocateAlpha($im, 0, 0, 0, 127);

Mi sembra tu stia assegnando una maschera di trasparenze a partire dall'immagine originale, ma non capisco a cosa si riferiscano i tre parametri settati a 0

satoshi2005
30-01-2007, 15:31
Uhm, l'intervallo di trasparenza effettivamente va da -44 a 45° da quel che vedo, e non vedo perchè dovresti avere problemi su altri gradi. Da totale ignorante su tali librerie, mi spieghi cosa dovrebbe fare la

$bgcolor = imageColorAllocateAlpha($im, 0, 0, 0, 127);

Mi sembra tu stia assegnando una maschera di trasparenze a partire dall'immagine originale, ma non capisco a cosa si riferiscano i tre parametri settati a 0
0 rosso, 0 verde e 0 blu.. il 127 sta per trasparente al 100%.. quindi invece di 0 0 0 puoi mettere qualsiasi altro numero compreso tra 0 e 255 che non cambia niente..

http://ch2.php.net/manual/en/function.imagecolorallocatealpha.php

yorkeiser
30-01-2007, 15:39
Se sono terne RGB dovresti settarle tutte a 255 se hai il fondo bianco, i bordi neri possono dipendere da quello (la tripletta 0,0,0 equivale al nero).

satoshi2005
30-01-2007, 15:59
Se sono terne RGB dovresti settarle tutte a 255 se hai il fondo bianco, i bordi neri possono dipendere da quello (la tripletta 0,0,0 equivale al nero).
Ma non cambia niente! Posso mettere anche rosso verde giallo o blu che non cambia.. perché il nero che mi mette come sfondo non lo prende da $bgcolor.. chissà da dove lo prende..

andbin
30-01-2007, 16:22
Ma non cambia niente! Posso mettere anche rosso verde giallo o blu che non cambia.. perché il nero che mi mette come sfondo non lo prende da $bgcolor.. chissà da dove lo prende..Semplice:

$bgcolor = imageColorAllocateAlpha($im, 0, 0, 0, 127);

127 indica "completamente trasparente". Il valore è tra 0 e 127. ;)

satoshi2005
30-01-2007, 16:29
Semplice:

$bgcolor = imageColorAllocateAlpha($im, 0, 0, 0, 127);

127 indica "completamente trasparente". Il valore è tra 0 e 127. ;)
Sì e visto che dovrebbe essere completamente trasparente perché me lo fa nero?

ianaz
31-01-2007, 08:40
Potrebbe essere un bug della GD...?!

satoshi2005
31-01-2007, 15:03
up..

satoshi2005
05-02-2007, 09:34
up