Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Image Thumb

5 réponses
Avatar
Le Fou
Bonsoir,

J'aimerais savoir quelle est la méthode la plus RAPIDE pour afficher des
miniatures d'images sur une page web ?
Sachant qu'on dispose d'un répertoire contenant une trentaine d'image
"grandeur nature" (entre 800x600 et 1024x768).

- Afficher les images en modifiant "width" et "height" de <img> ?
- Utiliser la librairie GD pour créer une seule fois les miniatures sur
le serveur ?
- Utiliser la librairie GD pour créer les miniatures à la volée à chaque
visite de la page ?
- Utiliser un script comme imagethumb() :
<http://code.seebz.net/p/imagethumb/> ?

Ou alors est-ce que ces méthodes se valent étant donné la vitesse
actuelle des liaisons internet ?

Merci.

--
A' tchao

Le Fou
http://shippylelivre.free.fr/
http://www.ffessm-cd84.com/

5 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 05/11/2014 20:27, Le Fou a écrit :

J'aimerais savoir quelle est la méthode la plus RAPIDE pour afficher des
miniatures d'images sur une page web ?
Sachant qu'on dispose d'un répertoire contenant une trentaine d'image
"grandeur nature" (entre 800x600 et 1024x768).

- Afficher les images en modifiant "width" et "height" de <img> ?



Déjà tu peux éliminer cette méthode : ce sera la plus LENTE.

- Utiliser la librairie GD pour créer une seule fois les miniatures sur
le serveur ?



C'est certainement la plus rapide au moment de l'accès aux images,
même s'il faudra un peu de temps (une seule fois) pour créer toutes
les miniatures.

- Utiliser la librairie GD pour créer les miniatures à la volée à chaque
visite de la page ?
- Utiliser un script comme imagethumb() :
<http://code.seebz.net/p/imagethumb/> ?



Ces deux méthodes sont à peu près équivalentes, l'une étant un simple
enrobage de l'autre.

Ou alors est-ce que ces méthodes se valent étant donné la vitesse
actuelle des liaisons internet ?



La vitesse actuelle de *ta* liaison internet est probablement loin
de représenter celle de tous les internautes, et même si tout le
monde avait une connexion rapide ce ne serait pas une raison pour
l'encombrer avec la première des quatre méthodes que tu suggères.
D'ailleurs, indépendamment de la question de vitesse, la qualité
d'une image retaillée à la volé par un navigateur n'a rien à voir
avec ce que tu peux obtenir avec la bibliothèque GD.

Donc, oublie cette première méthode.

En ce qui concerne les trois autres méthodes, ce n'est plus la
vitesse de la liaison internet qui sera déterminante, puisque dans
les trois cas les données transférées sont les mêmes. Au doigt
mouillé, sans faire le test, je dirais qu'il ne doit pas y avoir
une bien grande différence entre elles, à condition que tu saches
correctement gérer la mise en cache : en effet, pour un simple
fichier, les paramètres par défaut du serveur web doivent permettre
automatiquement aux clients et proxys de mettre en cache une image
déjà téléchargée ; mais si tu génères l'image à la volée, c'est à
toi de le faire.

Cordialement,
--
Olivier Miakinen
Avatar
Le Fou
Le 06/11/2014 10:53, Olivier Miakinen a écrit :
Le 05/11/2014 20:27, Le Fou a écrit :
J'aimerais savoir quelle est la méthode la plus RAPIDE pour afficher des
miniatures d'images sur une page web ?



(...)
Donc, oublie cette première méthode.
En ce qui concerne les trois autres méthodes, ce n'est plus la
vitesse de la liaison internet qui sera déterminante, puisque dans
les trois cas les données transférées sont les mêmes. Au doigt
mouillé, sans faire le test, je dirais qu'il ne doit pas y avoir
une bien grande différence entre elles, à condition que tu saches
correctement gérer la mise en cache : (...)




Merci Olivier pour ta réponse.
Je vais donc tester 2 solutions, miniatures sur le serveur ou miniatures
à la volée.
Ma capacité à faire marcher l'une ou l'autre décidera du choix ;-)

--
A' tchao

Le Fou
http://shippylelivre.free.fr/
http://www.ffessm-cd84.com/
Avatar
Fredchou
Le 06/11/2014 20:34, Le Fou a écrit :
Le 06/11/2014 10:53, Olivier Miakinen a écrit :
Le 05/11/2014 20:27, Le Fou a écrit :
J'aimerais savoir quelle est la méthode la plus RAPIDE pour afficher des
miniatures d'images sur une page web ?





> (...)
Donc, oublie cette première méthode.
En ce qui concerne les trois autres méthodes, ce n'est plus la
vitesse de la liaison internet qui sera déterminante, puisque dans
les trois cas les données transférées sont les mêmes. Au doigt
mouillé, sans faire le test, je dirais qu'il ne doit pas y avoir
une bien grande différence entre elles, à condition que tu saches
correctement gérer la mise en cache : (...)




Merci Olivier pour ta réponse.
Je vais donc tester 2 solutions, miniatures sur le serveur ou miniatures
à la volée.
Ma capacité à faire marcher l'une ou l'autre décidera du choix ;-)



Une solution intermédiaire que j'avais adoptée il y a longtemps :
générer la miniature "à la volée" si elle ne se trouve pas déjà dans le
cache du serveur.

--
Fredchou
mailto:
Avatar
Une Bévue
Le 06/11/14 22:28, Fredchou a écrit :
Une solution intermédiaire que j'avais adoptée il y a longtemps :
générer la miniature "à la volée" si elle ne se trouve pas déjà dans le
cache du serveur.



bon, c'est ce que je fais, tout mes thumbs sont dans un répertoire cache
et je teste, avant de créer le thumb, s'il existe déjà ou non.

j'utilise imagick, c'est assez lent mais mon problème est légérement
différent car mes images sont celles d'un APN elles font de l'ordre de
4000x3000 pixels^2 et je doit les retournes selon leur orientation
(paysage/portrait).

le code avec la ref où j'ai glané ça :
// http://php.net/manual/fr/book.imagick.php
function mkThumb($source, $destination, $thumb_width, $thumb_height){
$transparency = 'rgba(0, 0, 0, 0)';
$img_source = new Imagick($source);
$exifArray = $img_source->getImageProperties("exif:*");

if(!empty($exifArray['exif:Orientation'])) {
switch($exifArray['exif:Orientation']) {
case 8:
//echo "rotate -90<br />";
$img_source->rotateImage ($transparency , -90.00);
break;
case 3:
//echo "rotate 180<br />";
$img_source->rotateImage ($transparency , 180.00);
break;
case 6:
//echo "rotate 90<br />";
$img_source->rotateImage ($transparency , 90.00);
break;
}
}

$img_source->thumbnailImage($thumb_width, $thumb_height, true);

$width = $img_source->getImageWidth();
$height = $img_source->getImageHeight();

$image = new Imagick();
$image->newImage($thumb_width, $thumb_height, new ImagickPixel(
'none' ));

$border = new ImagickDraw();

// Set fill color to transparent
$border->setFillColor( 'none' );

// Set border format
$border->setStrokeColor( new ImagickPixel($transparency) );
$border->setStrokeWidth( 125 );
$border->setStrokeAntialias( false );

// Draw border
$border->rectangle(
0,
0,
$thumb_width,
$thumb_height
);

// Apply drawed border to final image
$image->drawImage($border);

$image->setImageFormat('png');

// Put source image to final image
$image->compositeImage(
$img_source, Imagick::COMPOSITE_DEFAULT,
($thumb_width - $width) / 2,
($thumb_height - $height) / 2
);


$image->writeImage($destination);
return $destination;
}
Avatar
Le Fou
Le 07/11/2014 05:08, Une Bévue a écrit :

bon, c'est ce que je fais, tout mes thumbs sont dans un répertoire cache
et je teste, avant de créer le thumb, s'il existe déjà ou non.

j'utilise imagick, c'est assez lent mais mon problème est légérement
différent car mes images sont celles d'un APN elles font de l'ordre de
4000x3000 pixels^2 et je doit les retournes selon leur orientation
(paysage/portrait).



Euhhh... Ça a l'air sympa imagick mais c'est pas pour moi ;-)
D'une part mes images sont beaucoup plus légères et beaucoup moins
nombreuses, d'autre part je suis un éternel débutant en PHP et je
recherche la simplicité afin de pouvoir adapter les codes à mes
réalisations tout en comprenant ce que je fais.

Pour l'instant mon problème reste la création de miniatures, et avant de
tester différentes manières (j'attends le week-end) j'ai créé les
miniatures "à la main" et les ai placées sur le serveur.
C'est une très bonne solution provisoire ;-)

Merci pour votre aide.

--
A' tchao

Le Fou
http://shippylelivre.free.fr/
http://www.ffessm-cd84.com/