Différence de rendu de GD entre Windows et Linux ?

Différence de rendu de GD entre Windows et Linux ? - Divers - Linux et OS Alternatifs

Marsh Posté le 22-08-2006 à 20:15:04    

Bonjour,
 
D'un côté j'ai un serveur WAMP avec :
GD Support  enabled  
GD Version  bundled (2.0.28 compatible)  
FreeType Support  enabled  
FreeType Linkage  with freetype  
FreeType Version  2.1.9
 
De l'autre, j'ai un serveur Debian Sarge avec :
GD Support  enabled  
GD Version  2.0 or higher  
FreeType Support  enabled  
FreeType Linkage  with freetype  
FreeType Version  2.1.7
 
J'ai fait un programme de dessin d'emploi du temps. J'utilise la police "verdana.ttf", or, avec le même code, le rendu est bien plus moche sur le serveur Linux.
 
Rendu Windows :
http://img63.imageshack.us/img63/2416/edt176gr.th.png
 
Rendu Linux :
http://img170.imageshack.us/img170/3834/edtimgfo4.th.png
 
Comment peut-on expliquer / corriger cela ? J'ai essayé avec Verdana Black sur la Debian mais c'est à peine mieux.
 
Merci beaucoup !  :hello:


Message édité par Master_Jul le 22-08-2006 à 20:15:32

---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 22-08-2006 à 20:15:04   

Reply

Marsh Posté le 23-08-2006 à 15:32:01    

si tu met un moins (-) à ta couleur ça donne quoi ?

Reply

Marsh Posté le 23-08-2006 à 17:07:56    

J'utilise des http://fr3.php.net/imagecolorallocate qui me rendent un int.
 
Si je le fais sur le noir par exemple, la valeur sera 0 il me semble, -0 c'est pareil, non ?
 
Enfin, je ne comprends pas où tu veux mettre le "-". Je prends pour exemple le noir car on voit qu'il y a un chevauchement, l'anti aliasing a l'air de foirer. Des fois ça semble plus fin, des fois plus épais. Enfin bref. :s

Reply

Marsh Posté le 23-08-2006 à 18:01:22    

D'après ce que j'ai pu lire via google, le fait de mettre un - supprime l'antialiasing donc c'était pour voir ce que ça ferait. Mais bon c'est vrai que sur 0 je ne sais pas comment ça se comporte.
 
http://fr3.php.net/manual/en/function.imagettftext.php --> The color index. Using the negative of a color index has the effect of turning off antialiasing. See imagecolorallocate().

Reply

Marsh Posté le 23-08-2006 à 18:03:42    

Sinon ils sont compilé comment tes 2 php ?

Reply

Marsh Posté le 23-08-2006 à 18:07:25    

tu as essayé en utilisant une police qui n'a pas besoin du bytecode interpreter, comme bitstream vera sans par exemple


Message édité par Mjules le 24-08-2006 à 13:58:44

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 24-08-2006 à 07:12:38    

Alors, j'ai fait le test sur Windows en ajoutant en bas de mes couleurs :
$noir=-$noira;
$rouge=-$rougea;
 
pour les passer en "négatives". Voilà le résultat :
http://img172.imageshack.us/img172/9347/edtimgfz6.th.png
 
Sur le rouge, ça devient en effet moche, sur le noir, aucun effet.
 
Sur Windows :

PHP Version 5.1.2
Apache Version  Apache/2.0.55 (Win32) PHP/5.1.2
Configure Command  cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"
 
loaded Modules  core mod_win32 mpm_winnt http_core mod_so mod_access mod_actions mod_alias mod_asis mod_auth mod_autoindex mod_cgi mod_dir mod_env mod_imap mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_userdir mod_php5


 
Sur Debian, c'est le paquet backports :

PHP Version 5.1.4-0.1~bpo2
Apache Version  Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.3.2 mod_python/3.1.3 Python/2.3.5 PHP/5.1.4-0.1~bpo2 mod_ssl/2.0.54 OpenSSL/0.9.7e
 
Loaded Modules  core mod_access mod_auth mod_log_config mod_logio mod_env mod_setenvif prefork http_core mod_mime mod_status mod_autoindex mod_negotiation mod_dir mod_alias mod_so mod_actions mod_cgi mod_dav mod_dav_fs mod_dav_svn mod_authz_svn mod_fcgid mod_python mod_php5 mod_ssl mod_userdir


 
Je tente avec cette police dans la matiné Mjules. :jap:


Message édité par Master_Jul le 24-08-2006 à 07:13:43

---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 24-08-2006 à 18:17:13    

Voilà le résultat avec Bitstream Vera :
http://img150.imageshack.us/img150/6546/edtimgva2.th.png
 
C'est un peu moins chaotique mais ça a toujours l'air "maigre" et écorché par rapport à la version Windows qui a un aliasing bien plus propre.
 
Edit :
 
J'ai trouvé ce topic, malheureusement abandonné, sur un cas similaire :
http://aspn.activestate.com/ASPN/M [...] ev/2475371
 
Sauf que lui veut le rendu du serveur (l'inverse). Je suppose qu'il a du Windows sur sa machine. C'est aussi du Verdana mais bon, pour moi le rendu est aussi "mauvais". Après ça peut paraître normal comme c'est ci-desssus ? :??:


Message édité par Master_Jul le 24-08-2006 à 18:26:53

---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 24-08-2006 à 19:48:38    

Tu peux montrer une ligne où tu génère le texte ?

Reply

Marsh Posté le 24-08-2006 à 22:41:54    

Il n'y a vraiment rien de spécial :
 

// Affichage de l'établissement
imagettftext($im,10,0,MG,42,$noir,$police,$NomEtab);


 
C'est la seconde ligne, en noir. MG est une variable "defined".
 
En vrac :

header ("Content-type: image/png" );
 
// Paramètres de l'image
require "edt_config.inc.php";
 
// Création de l'image
$im = imagecreatetruecolor ($LARGEUR, $HAUTEUR)
      or die ("Impossible de crée un flux d'image GD" );


 
 
Hum, je viens de trouver une différence, dans le fichier Windows :

// Définition de la police
$police="verdana.ttf";


 
Dans la version sous Linux, la police n'était pas "trouvée" (erreur lors de la génération de l'image), j'ai cherché sur le net pour arriver à ça :

// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));
 
// Définition de la police (sans l'extension !)
$police="Vera";


Message édité par Master_Jul le 24-08-2006 à 22:42:46

---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 24-08-2006 à 22:41:54   

Reply

Marsh Posté le 24-08-2006 à 23:43:09    

Vera.ttf = verdana.ttf ?

Reply

Marsh Posté le 25-08-2006 à 06:44:56    

Non, c'est juste parce que j'ai fait un test avec Bitstream Vera comme me l'a proposé Mjules. En temps normal c'est "verdana", le fichier est le même.


---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 25-08-2006 à 12:18:00    

Ok, j'avais déjà eu ce problème mais vu que je n'avais pas trouvé de solution ça m'intéresse mais bon apparemment c'est pas si simple :(

Reply

Marsh Posté le 25-08-2006 à 15:35:08    

J'avais commencé à l'origine ce projet sur une Mandrake 9/10, je ne sais plus exactement et ça n'avait pas posé de problème.
 
On ne peut rien configurer dans GD en fait, si ?  
 
Apparemment celui de Windows est configuré "à la main", il y a l'option "--with-gd=shared" mais je ne sais pas en quoi ça joue.
Les versions Windows des softs sont vraiment trop légèrement plus récentes pour que ça joue. Surtout qu'à l'époque, je pense que j'ai commencé sur du Apache 1x / PHP4x...

Reply

Marsh Posté le 25-08-2006 à 15:45:41    

shared veut dire qu'il compile un .so qui peut être chargé dynamiquement au lieu d'être dans php directement.

Reply

Marsh Posté le 28-08-2006 à 19:04:30    

Ok. (Up caché)

Reply

Marsh Posté le 28-08-2006 à 21:50:34    

je sais que selon que tu utilise la version native ou la version shared, l'antialiasing ne marche pas.
cf http://qa.mandriva.com/show_bug.cgi?id=20686


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 28-08-2006 à 21:57:17    

Enfin, j'ai l'impression qu'il marche là, on voit qu'il y a un peu de flou, mais il est mal fait quoi. Par rapport à ça :
http://img172.imageshack.us/my.php?image=edtimgfz6.png
 
où il n'y a clairement pas d'AA.


---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 30-08-2006 à 23:39:18    

up


---------------
En français, on écrit "connexion", pas "connection".
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed