Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

Bonjour,

 

Pour égayer mon site un peu plus et attirer de nouveaux visiteurs ( :P ), j'ai voulu créer un script pour générer des userbars ...

 

Le générateur marche parfaitement en local :

 

75901b823d8a79d79ab950d2bdb5fcfa.png

 

Plutôt bien chez free sauf pour les rayures (hébergement de type siteperso.free.fr) :

 

cfdff0a3448417e149343f3b4cc9b09b.png

 

Et pas du tout chez mon hébergeur, qui je crois (on m'a offert l'hébergement pour mon anni) est un serveur ovh kimsufi :

 

L'image “***/...” ne peut être affichée car elle contient des erreurs.

 

----------------------------------------------------------------------------------------------------------------------------------

 

Librairies GD de ces hébergeurs (d'après phpinfo):

 

- local : 2.0 or higher ( sous linux ubuntu )

- free : bundled (2.0.28 compatible) (Linux dyn45-g5.priv.free.fr )

- ovh : bundled (2.0.34 compatible) ( sous Windows NT )

 

Vous allez surement me demander mon code, mais je ne peut pas le donner entièrement car sur la toille personne ne donne de générateur d'userbar, j'ai mis au moins 1 journée à le créer, et je ne voudrais pas que certains profitent de mon boulot , pourtant je suis loin d'être égoïste, je peut quand même donner des portions de code :P

 

Merci d'avance, d'où peut donc venir se fameux problème ? :P

Modifié par julien88

Posté(e)

T'as éssayé de vider le cache de ton navigateur etc. ?

Posté(e)

Vider le cache va remettre les rayures dans le bon sens, tu crois ??

 

Julien88 : Est-ce que tu as la possibilité en PHP de logger tes erreurs ou de faire des try / catch ? Si tu ne peux pas logger, en cas d'erreur tu pourrais générer non pas un contenu de type image/jpg mais text/plain avec le texte de l'erreur, le temps de débugger ?

Posté(e)

Non, je veux dire que si son navigateur a en cache une image corrompue (ça peut arriver, erreur de chargement etc.) ça peut être intéressant qu'il vide le cache afin d'en demander une nouvelle au serveur, si c'est toujours corrompu ben c'est que le problème est ailleurs :/

Posté(e)

En général quand le navigateur affiche que "l'image contient des erreurs", il ne met rien en cache...

C'est le cas de Firefox, du moins...

D'ailleurs, ce message signifie peut-être que les données reçues ne correspondent pas à une image donc si ça se trouve les messages d'erreur sont bien là mais servis avec un prétendu Content-Type d'image. En sauvegardant la page ("l'image" qui sort en erreur) et en l'ouvrant avec un éditeur de texte, qu'est-ce que cela donne ?

Posté(e) (modifié)

Bonjour kewlcat et med365,

 

Merci pour vos réponses :P

 

Je ne pense pas que cela puisse venir du cache... surtout que j'ai testé sur ie et firefox et ça donne le même résultat et j'ai même vidé le cache.

 

--------------------------------------------------------------------------------------

 

Pour vous aider à définir mon problème je vais vous expliquer un peu le fonctionnement de mon script .

 

- première page (index.php) : formulaire qui permet de définir les variables (sens des rayures, couleur de texte/font ...)

- deuxième page (index2.php) : créateur de l'image (il enregistre l'userbar dans un dossier avec un nom aléatoire.png).

- Troisième page (index3.php) : affiche l'image nommée par un chaine aléatoire qui est contenue dans le dossier .

 

J'ai du enregistrer l'image dans un dossier car, avant, lorsque l'image était affichée sous forme de page à l'utilisateur (mon image = index.php par exemple) , lorsque j'enregistrais l'image, elle apparaissait en noir et gris avec les rayures alors que sur la page où elle était affichée elle était colorée .De plus, cette solution d'enregistrer l'image apporte une bonne alternative car cela permet au visiteur qui veut générer une userbar de garder l'userbar sur mon site au lieu de l'héberger chez hiboox par exemple ...

 

Voila à quoi ressemblait l'image en l'enregistrant :

d4078e24008d20970c2b2fc6273486e7.png

= texte disparu, et aucune couleur.

 

--------------------------------------------------------------------------------------------------------------

 

Pour les rayures ... j'ai bidouillé un peu et par hazard, j'ai trouvé que si j'ajoutais un zéro à la fin d'un nombre (700) les rayures allaient dans le sens contraire peut être que le problème sur le serveur de mon site viens de cette bidouille pas très claire ? :P

 

Voici une partie du code qui me permet d'appliquer des rayures selon des conditions :

 

// ON APPLIQUE LES RAYURES

if($_POST['hach'] != "hach3")
{
if($_POST['hach'] == "hach1")
{
$style = array($rayures, $couleur,$couleur, $rayures); 
imagesetstyle($image, $style); 
imagesetthickness($image, 700); // ajouter un zero pour changer sens rayures ....
imageline($image,7,0,20,350, IMG_COLOR_STYLED); 
}
else
{
$style = array($rayures, $couleur,$couleur, $rayures); 
imagesetstyle($image, $style); 
imagesetthickness($image,7000); 
imageline($image,7,0,20,350, IMG_COLOR_STYLED);
}
}
if($_POST['hach'] == "hach3") // sans rayures
{
$couleur = imagecolorallocate($image, $rgb1, $rgb2, $rgb3);
$image = imagecreatetruecolor(350,20);
ImageFilledRectangle ($image, 0, 0, 350, 20, $couleur);
}

Dans ce code (un peu foireux au niveau des conditions je vous l'accorde, mais j'ai pas eu le choix, en gd j'ai souvent eu des erreurs ) : $couleur est la couleur de fond,et $rayures la couleurs des rayures

 

Pour faire mes rayures, j'ai été vers le milieu de ça: vulgarisation-informatique --> les images, mais je dois avouer que je n'ais pas compris beaucoup ... et que j'ai bidouiller mais tant que sa marche (en local en tout cas)! :P

 

 

Est-ce que tu as la possibilité en PHP de logger tes erreurs ou de faire des try / catch ? Si tu ne peux pas logger, en cas d'erreur tu pourrais générer non pas un contenu de type image/jpg mais text/plain avec le texte de l'erreur, le temps de débugger ?

 

 

Je veux veut bien, mais pourrais tu me dire comment faire s'il te plait ?

 

merci d'avance :P

 

Pour vérifier mes dires, un petit cadeau, pas très dur de voir l'userbar la plus belle ^^ :

 

local : 2f67abc9e8035c3a7779985009ac9be0.png

site :

L'image “racinesite/userbar/index2.php” ne peut être affichée car elle contient des erreurs

free : 928f0c54ef770b8da9738efbe8546971.png

 

 

ps :vraiment bien ton système pour déplacer du contenu multimédia et des div css sur ton site kewlcat :P

Modifié par julien88
Posté(e)

J'ai pas trop compris comment fonctionne le code qui génère les rayures... Tu ne traces qu'une seule et unique ligne d'une épaisseur de 700 (ou 7000 !) pixels ?!?

Posté(e) (modifié)

Eh bien, j'ai testé pleins de solutions et il s'avère que avec 700 ou 7000 les rayures étaient bien en biais d'un sens ou d'en l'autre .... :P

 

Pour faire cela j'ai suivis se tutoriel :

 

Modifier le style des lignes et des contours de formes :

 

La fonction imagesetstyle() permet de modifier le style des lignes et des contours de formes pour créer des lignes personnalisées. Voici un exemple :

<?php

header('Content-type: image/gif');

 

$image = imagecreate(200, 200);

$blanc = imagecolorallocate($image, 255, 255, 255);

$noir = imagecolorallocate($image, 0, 0, 0);

$rouge = imagecolorallocate($image, 255, 0, 0);

 

$style = array($noir, $rouge, $noir, $rouge, $rouge, $rouge, $noir); //un pixel noir, un pixel rouge, un pixel noir ...

 

imagesetstyle($image, $style); //Applique le style sur l'image

imagesetthickness($image, 20); //Modifie l'épaisseur de la ligne

 

imageline($image, 50, 60, 150, 60, IMG_COLOR_STYLED); //On utilise la constante IMG_COLOR_STYLED qui signifie que GD doit utiliser le style défini plus haut

 

imagegif($image);

?>

 

Nous venons de créer une ligne. Les coordonnées du premier point sont (50, 60) et du second point (150, 60). La ligne sera personnalisée (notez la constante IMG_COLOR_STYLED). Il y aura respectivement un pixel noir, un pixel rouge, un pixel noir, trois pixels rouges et un pixel noir (voir le tableau $style).

 

Voilà ce que cela donne en pratique :

 

php_15_etape4.gif

 

Et j'ai changé les variables à la fin pour pouvoir obtenir les mêmes rayures en biais mais sur mon image (qui n'a pas les mêmes dimensions), mais je ne sais pas ce que veulent dires les variables dans : " imageline($image, X, X, X, X, IMG_COLOR_STYLED);" où j'ai placé des X .... :P

 

merci d'avance :P

 

 

-----------------------------------------------------------------------------------------------------------

 

Puisque tu m'as parlé d'un moyen d'afficher l'erreur peut tu me dire comment faire kewlcat ? pour que je sache ce qui ne va pas ?

Modifié par julien88
Posté(e)
Et j'ai changé les variables à la fin pour pouvoir obtenir les mêmes rayures en biais mais sur mon image (qui n'a pas les mêmes dimensions), mais je ne sais pas ce que veulent dires les variables dans : " imageline($image, X, X, X, X, IMG_COLOR_STYLED);" où j'ai placé des X .... :chpas:
Souviens-toi de tes cours de géométrie. Ces valeurs représentent les abscisse et ordonnée des points de départ et d'arrivée du segment de droite que tu traces dans ton image.

http://fr.wikipedia.org/wiki/Ordonn%C3%A9e

Si j'ai bien suivi le tuto, les hachures s'obtiennent en définissant un "style" pour les lignes avec des couleurs alternées, donc théoriquement il te suffit de tracer une ligne d'une épaisseur de 20 en travers de ton image (image qui fait 20 de haut...) pour obtenir l'effet désiré.

La modification du résultat par un passage de la largeur de trait à 7000 semble provenir d'un effet de bord et comme je n'ai pas étudié la librairie GD en détail je ne pourrai pas te dire ce qui se passe sur les différentes machines avec les différentes versions de gd.

Mon conseil : trace ta ligne entre { 0 , 10 } et { 150 , 10 } (elle fait 150 de large, ton image ?) et avec une épaisseur de 20 ;-)

 

Pour le reste (le débuggage) utilise des blocs try/catch : http://www.php.net/exceptions

<?php

try {

 (...) bla bla bla gd ceci, gd cela (...)
 imagegif($image);

} catch (Exception $e) {

 header("Content-type: text/plain");
 echo "Erreur : " .  $e->getMessage() . "\n";

} ?>

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...