Page 1 sur 1

Script de redimensionnement

Posté : 30 janv. 2007, 02:27
par Fugugirl
Bonsoir à tous,

je débute en php et me voilà confrontée au redimensionnement d'image.

Le problème est le suivant. J'ai un formulaire dans lequel j'uploade une image qui est stockée dans un dossier de mon site. Jusque là pas de problème.
Mon souci est que je veux utiliser cette image non seulement à sa taille normale mais aussi en vignetteS dont la taille va changer selon la page surlaquelle la vignette sera affichée. Je cherche donc un script (dans ma page html) qui me permette de redimensionner mon image à la volée selon une largeur précisée (la hauteur je m'en fiche pour le moment). Sur un autre site j'ai trouvé ce code :
<?
Header("Content-type: image/jpeg");
$image = "logo.jpg";
$src_im = ImageCreateFromJpeg($image);
$size = GetImageSize($image);
$src_w = $size[0];
$src_h = $size[1];
//taille de votre image
$dst_w = 100; 
// Contraint le rééchantillonage à une largeur fixe
// Maintient le ratio de l'image
$dst_h = round(($dst_w / $src_w) * $src_h);
$dst_im = ImageCreateTrueColor($dst_w,$dst_h);
/* ImageCopyResampled copie et rééchantillonne l'image originale*/
ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
/* ImageJpeg génère l'image dans la sortie standard (c.à.d le navigateur).
Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un fic
hier*/
ImageJpeg($dst_im);
ImageDestroy($dst_im);
imageDestroy($src_im);
?>
mais je n'arrive pas à le faire fonctionner....
Quelqu'un pourrait-il me guider un peu ???

Merci encore de votre aide.

Aurélia.[/php]

Posté : 30 janv. 2007, 02:35
par Ultim4T0m
Bonsoir,

Je ne sais pas si c'est très apprécié, ou même si c'est vraiment quelque chose à faire, mais dans ton cas, ce serait bien plus simple à appliquer je pense.

Il suffirait de préciser la largeur voulue dans les attributs de ta balise <img>
<img src="logo.jpg" alt="Logo" width="LargeurDésirée" />
Bien entendu, l'image source est plus grande que l'image qui apparaît réellement, et donc nécessite un téléchargement plus important pour l'utilisateur, mais ce peut être une solution...


Sinon, pour ton script, quand tu dis que tu n'arrive pas à le faire fonctionner, cela signifie quoi. Un message d'erreur s'affiche, il ne fait pas ce que tu veux, rien ne se produit ?

Posté : 30 janv. 2007, 02:40
par Fugugirl
Merci de ta réponse,

j'ai déjà (en désespoir de cause) joué sur la valeur de la width en attendant... Autant sous Mac ça passe très bien mais sur PC c'est de la bouillie.

Je crois que tout bêtement je ne comprends pas le script. J'ai demandé à un ami plus affranchi que moi et il n'a pas trouvé la solution non plus. Sous mac j'ai une page blanche (argh) et sous pc rien ne se passe ou alors ça génère des erreurs en pagaille dans le code.

Si tu as une piste pour un autre code (qui ne gère que le redimensionnement) je suis preneuse :)

Bonne nuit !
Aurélia.

Posté : 30 janv. 2007, 05:24
par AB
Bonjour Fugugirl,

Deux liens pour le redimentionnement des images
http://www.siteduzero.com/tuto-3-5572-1 ... image.html

http://www.siteduzero.com/tuto-3-166-1- ... #ss_part_5

Tu risque de te faire banir de ton serveur si tu fais des redimensionnements à la volée. Cela consomme beaucoup en ressources et si tu as de nombreuses connexions simultanées ça risque de coincer. Et si tes images originales sont de grande dimension, c'est pas la peine d'en parler...

A ta place je ferais une image de dimension de la plus grande de tes vignettes qui sera uploadée sur le serveur et ensuite une redimension avec largeur et hauteur proportionnelle (directement avec width et height) en fonction d'un getimagesize sur cette image.
Je fais ça sur certains de mes sites et ça passe très bien (mac ou pc c'est pareil). Tu ne dois pas avoir fait les bons réglages, ou alors tu parts d'une image de trop grande dimension.

Si tu souhaites un agrandissement, il te faut une deuxième grande image sur ton serveur qui sera chargée uniquement sur un clic sur la vignette ou affichée dans une autre page...

Comme ça ton site sera optimisé.

Mais une seule grande image pour tout faire et redimensionnement PHP à la volée :non2: et encore pire si tu as plusieurs vignettes par page :!:
Ton serveur ne va pas supporter pour peu que tu aies de nombreuses connexions simultannées. Poison trop violent :wink:
Ou alors tes visiteurs risquent d'attendre des plombes avant de voir s'afficher leur page :(

Posté : 30 janv. 2007, 08:07
par Ultim4T0m
Finalement je n'étais pas si loin, je pensais me faire taper sur les doigts ^^'

En effet je n'avais pas vraiment pensé à getimagesize()

Cette fonction te retournera la taille de ton image, tu n'auras plus qu'à diviser la hauteur et la largeur par ce que tu veux pour obtenir tes vignettes.

Mais je ne vois pas par contre pourquoi sous PC ce serait de la bouillie... Enfin ce sera plus propre avec la méthode d'AB il n'y a pas de doute ;)

Posté : 30 janv. 2007, 11:23
par Fugugirl
Merci à tous pour votre aide.

Je vais tester avec GetImageSize()... et marquer ma height aussi.

Bonne journée à tous !!

Posté : 30 janv. 2007, 12:12
par Fugugirl
Bon alors j'ai appliqué la méthode sur le site du Zéro. Ca marche, il me faudrait l'avis de possesseurs de PC pour me dire à quoi ressemble mes vignettes. Le page est la suivante :

http://www.ebloch-dano.com/livres.php

Voilà si quelqu'un peut prendre 30sc pour y faire un petit détour, je l'en remercie d'avance.

Merci, merci !!!

Aurélia.

Posté : 30 janv. 2007, 14:21
par serein714
Euhhh...
Il doit y avoir dans l'adresse, mon PC ne trouve pas la page!

Posté : 30 janv. 2007, 14:25
par Fugugirl
Euhhh...
Il doit y avoir dans l'adresse, mon PC ne trouve pas la page!
Non c'est le serveur de l'hébergeur qui fait $##@%% !!

Merci d'avoir pris du temps, même si tu es tombé le bec dans l'eau.

Posté : 30 janv. 2007, 14:27
par Ultim4T0m
Préviens nous quand c'est de nouveau disponible ;)

Mais il n'y a pas de raison que ça passe sous Mac et pas sous PC #-o

Posté : 30 janv. 2007, 17:42
par AB
Re bonjour,

Maintenant, ça marche impeccable. Effectivement, si tu n'a que deux dimensions d'images, le plus simple et le plus efficace est de faire deux images différentes.

Et ça évite à ton serveur de faire $##@%% !!
:wink:

Posté : 30 janv. 2007, 17:49
par Fugugirl
En fait j'en ai trois mais je rentre la taille de ma plus grde image directement en upload...

Merci à tous pour votre gentillesse et vos conseils.

Bonne journée :)

Aurélia.