[Script Invision] Anti-Petage de layout

Statut
N'est pas ouverte pour d'autres réponses.
C

Chris_

ex membre
Bonjour a tous,
voila j'aimerais savoir si il existe un script pour que les images ne petent pas mon forum invision (un script du style clui de gamerz)

voila merci all !
 
A

anon23T

ex membre
Et si ya le même pour phpBB j'suis partant :]
 

Gh0$T

Elite
FAit afficher la source du code sur une page qui contient la photo tu verras le coede javascript ;)
 

AssiuM

Fan
Gh0ST a dit:
FAit afficher la source du code sur une page qui contient la photo tu verras le coede javascript ;)
hu :)
c'est du code php derrière qui refait l'image :))
 

MbK_

Etudjant
Redimensionner une image

C'est une des fonctionnalités les plus intéressantes de la librairie GD à mon goût. Ca permet de créer des miniatures de nos images.
Vous pouvez vous en servir par exemple pour faire une galerie de photos. Vous affichez les miniatures et si vous cliquez sur l'une d'elles, ça l'affiche dans sa taille originale.

Pour redimensionner une image, on va utiliser la fonction imagecopyresampled. C'est une des fonctions les plus poussées car elle fait beaucoup de calculs mathématiques pour créer une miniature de bonne qualité. Le résultat est très bon, mais cela donne énormément de travail au processeur.

Cette fonction est donc puissante mais lente. Tellement lente que certains hébergeurs désactivent la fonction pour éviter que le serveur ne rame.
Il serait suicidaire d'afficher directement l'image à chaque chargement d'une page. Nous allons donc créer la miniature une fois pour toutes et l'enregistrer dans un fichier.


Nous allons donc enregistrer notre miniature dans un fichier (par exemple "mini_couchersoleil.jpg"). Cela veut dire qu'on peut déjà virer la première ligne (le header) qui ne sert plus à rien.

Comme pour imagecopymerge, on va avoir besoin de 2 images : la source et la destination. Ici, la source c'est l'image originale, et la destination c'est l'image miniature que l'on va créer.

La première chose à faire sera donc de créer une nouvelle image vide... Avec quelle fonction ? imagecreate ? Oui, c'est presque la bonne réponse.
Le problème voyez-vous, c'est que imagecreate crée une nouvelle image dont le nombre de couleurs est limité (256 couleurs maximum en général). Or, notre miniature contiendra peut-être plus de couleurs que l'image originale à cause des calculs mathématiques.
On va donc devoir utiliser une autre fonction dont je ne vous ai pas encore parlé : imagecreatetruecolor. Elle fonctionne de la même manière que imagecreate, mais cette fois l'image pourra contenir beaucoup plus de couleurs

Voici le code que je vais utiliser pour générer la miniature de ma photo "couchersoleil.jpg" :


Source 4.2.11 : créer une miniature


Code:
<?
$source = imagecreatefromjpeg("couchersoleil.jpg"); // La photo est la source
$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);

// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);

// On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
imagejpeg($destination, 'mini_couchersoleil.jpg');
?>


Et grâce à imagecopyresampled, on a obtenu ça :



Je sais pas ce que vous en pensez, mais moi je trouve ça très efficace
Vous pouvez afficher ensuite l'image avec le code HTML :
<img src="mini_couchersoleil.jpg" />

Bon comment ça marche ?
On crée notre miniature vide avec imagecreatetruecolor en dimension réduite (200 x 150).
Je vous ai déjà expliqué les fonctions imagesx et imagesy, je ne reviens pas dessus. Voyons plutôt quels sont les paramètres de la fonction imagecopyresampled :

L'image de destination : c'est $destination, l'image qu'on a créé avec imagecreatetruecolor.
L'image source : l'image dont on veut créer la miniature, ici c'est notre couchersoleil.jpg qu'on a chargé avec imagecreatefromjpeg.
L'abscisse du point où vous placez la miniature sur l'image de destination : pour faire simple, on va dire que notre image de destination contiendra uniquement la miniature. Donc on placera la miniature aux coordonnées (0, 0), ce qui fait qu'il faut mettre 0 à cette valeur.
L'ordonnée du point où vous placez la miniature sur l'image de destination : pour les mêmes raisons, mettez 0.
L'abscisse du point de la source : ici, on prend toute l'image source et on en fait une miniature. Pour tout prendre, il faut partir du point (0, 0), ce qui fait que là encore on met 0 à cette valeur.
L'ordonnée du point de la source : encore 0.
La largeur de la miniature : un des paramètres les plus important, qui détermine la taille de la miniature à créer. Dans notre cas notre miniature fait 200 pixels de large. On a stocké ce nombre dans la variable $largeur_destination.
La hauteur de la miniature : de même pour la hauteur de la miniature à créer.
La largeur de la source : il suffit d'indiquer la taille de notre image source. On a stocké cette valeur dans $largeur_source, donc on la réutilise ici.
La hauteur de la source : de même pour la hauteur.
Comme vous pouvez le voir, imagecopyresampled permet de faire beaucoup de choses, et en général on ne se servira pas de tout.
Pas mal de paramètres sont à 0, et c'est pas vraiment la peine de chercher à comprendre pourquoi (même si c'est pas bien compliqué). Basez-vous sur mon exemple pour créer vos miniatures, et le tour sera joué

sources
 

Gh0$T

Elite
AssiuM a dit:
Gh0ST a dit:
FAit afficher la source du code sur une page qui contient la photo tu verras le coede javascript ;)
hu :)
c'est du code php derrière qui refait l'image :))
Oups sorry, je sais que je suis pas ort la dedans enfin, faut pas trop m'écouter dans la prog enfn merci e l'info :p
 

Styleman

Touriste
erf moi j'ai fais ça avec getimagesize et full calcul....:?

Bouarf c pas grave ça fonctionne donc
 

Ludovic_

Anime > Manga
Demande à laurent, il en a fait un sur une fonctione php :)
 

Styleman

Touriste
Kiwi a dit:
Demande à laurent, il en a fait un sur une fonctione php :)
Ben moi aussi je l'ai fais avec une seule fonction, mais ça ne crée pas une miniature, c'est juste qu'il affiche l'image en plus petit, donc ça ne reviens peut etre pas au meme!
 
A

anon23T

ex membre
Pour éviter de trop grandes images qui déforme votre
Forum. (Images poster par les membres)

Ouvrir
overall_header.tpl qui ce trouve dans
le repertoire de votre templates.
votreforum/templates/votre templates/overall_header.tpl




Code:
##########Trouver : 


<body bgcolor="{T_BODY_BGCOLOR}" text="{T_BODY_TEXT}" link="{T_BODY_LINK}" vlink="{T_BODY_VLINK}"> 

##########Ajouter avant : 

<script language="javascript" type="text/javascript"> 
<!-- 
  function resize_images() 
  { 
    for (i = 0; i < document.images.length; i++) 
    { 
      while ( !document.images[i].complete ) 
      { 
       break; 
      } 
      if ( document.images[i].width > 440 ) 
      { 
        document.images[i].width = 440; 
      } 
    } 
  } 

//--> 
</script> 

##########Chercher 

<body bgcolor="{T_BODY_BGCOLOR}" text="{T_BODY_TEXT}" link="{T_BODY_LINK}" vlink="{T_BODY_VLINK}"> 

##########Attention votre balise body peut être différente. 

##########Ajouter a la fin 

onload="resize_images()" 

##########Exemples 


<body bgcolor="{T_BODY_BGCOLOR}" text="{T_BODY_TEXT}" link="{T_BODY_LINK}" vlink="{T_BODY_VLINK}" onload="resize_images()"> 

Remarque width > 440 représente la taille en largeur et en pixel de l'image a vous de régler cette taille a votre convenance.
> source
 

Jereck

Α & Ω
Staff
Spoon : je déconseillerait ta solution car avec ton script, l'image (imaginons : 1600x1200) est téléchargée entièrement chez le client mais est réduite, tandis qu'avec la librairie GD (si elle est disponible évidemment) l'image qui "atterit" chez le client est l'image réduite (en taille, mais surtout, en poids)
 

pyrO

arN[pounz]
C'est quoi le layout :oops: :?:
 

PiaFlalCoOl

NiuAge
au fait, c'est quoi le scrript du forum de gamerz ? C'est loin de phpbb ?
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut