Juste un bout d'image pour l'apercu

Mammouth du PHP | 620 Messages

02 août 2009, 21:56

bonjour,
je voulais savoir si il est possible avec une image de n'afficher qu'une seule partei de celle ci afin de la pas mettre l'apercu complet de l'image.
pour etre plus claire : l'internaute ne voit que la partie foncé de l'image et si il clic dessus il ouvre l'image en grand. (sans passé par un systeme ou je dois créer une miniature en plus de l'image d'origine)

Image

Mammouth du PHP | 2937 Messages

02 août 2009, 23:29

C'est possible, grâce à la bibliothèque GD et, notamment, à la fonction imagecopyresampled (). ;)

Eléphant du PHP | 453 Messages

02 août 2009, 23:31

Bonsoir Fabrice,

Je t'invite à regarder la signature de la fonction imagecopy() et de lire ce qui suit :
<?php
header("content-type:image/jpeg");

$image = imagecreatetruecolor(150,100);
$noir = imagecolorallocate($image,0,0,0);
imagefill($image,0,0,$noir);

$source = imagecreatefromjpeg("image_grande.jpg");
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);

imagecopy($image,$source,-30,-25,0,0,$largeurSource,$hauteurSource);


imagejpeg($image);
imagedestroy($image);
?>
*code fait de tête. Je peux m'être trompé.

Après, si tu as besoin d'appeler ton image via l'élément img, tu peux faire ceci :

Code : Tout sélectionner

<img src="imageMasquee.php" alt="imageMasquee.php" ... />
Si tu te débrouilles bien, tu factorises le code afin de rendre encore plus dynamique cette simple technique.

Bonne soirée à toi :)
Modifié en dernier par niuxe le 03 août 2009, 01:48, modifié 1 fois.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 453 Messages

02 août 2009, 23:45

C'est possible, grâce à la bibliothèque GD et, notamment, à la fonction imagecopyresampled (). ;)
Il me semble que cela prenne beaucoup de ressource serveur, n'est ce pas ? :roll: Également, je pose la question suivante : comment va réagir le serveur dans le cas d'un affichage après un « re-sample » d'une cinquantaine d'images ?

Apparemment, Fabrice ne désire pas faire un redimensionnement, mais plutôt un cadrage sur une image.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 2937 Messages

02 août 2009, 23:48

Il me semble que cela prenne beaucoup de ressource serveur, n'est ce pas ? :roll:
La génération d'image en PHP, quelle que soit la fonction de GD utilisée, prend des ressources, de toute façon. Cela dit, pour en libérer, imagedestroy () est ton ami. ;)

ViPHP
ViPHP | 5924 Messages

03 août 2009, 01:30

imagedestroy réduira l'utilisation de la mémoire, mais pas du temps processeur :)

Mammouth du PHP | 620 Messages

03 août 2009, 09:06

ok merci je vais tester cette solution.
j'ai cependant une petit question :
quel est le probleme avec le fait que sa prenne de la resource ?

Mammouth du PHP | 991 Messages

03 août 2009, 10:44

Simplement une application lente , et la possibilité de saturer le serveur (Donc un mail de ton hebergeur te disant de ne pas recommencer , ou sinon c'est la porte :p)

Oui un serveur n'a pas qu'un site :p il peut en avoir des centaines ^^ donc si a toi tout seul (ou plusieurs) lance de gros traitement en simultanée cela va tout bloqué.

La solution serait peut être un systeme de cache plus ou moins dynamique , tu génère en les images avec la zone estompée, et tu les enregistres dans un fichier.

Prenons l'exemple de toute à l'heure.

En gardant le même appel de fichier , tu met une condition sur le temps et / ou sur l'existance du fichier.
Si oui : Tu génére un fichier et tu l'enregistre , ensuite tu l'envoi a l'affichage
Si non : tu renvoi directement le fichier avec un readfile() ou équivalent


C'est ma vision des choses qui en mon sens serait la moins couteuse en terme de serveur !!

bye hawk
DevOps, Symfony4, Hoa