Discussion:
Image Thumb
(trop ancien pour répondre)
Le Fou
2014-11-05 19:27:46 UTC
Permalink
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/
Olivier Miakinen
2014-11-06 09:53:52 UTC
Permalink
Bonjour,
Post by Le Fou
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.
Post by Le Fou
- 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.
Post by Le Fou
- Utiliser la librairie GD pour créer les miniatures à la volée à chaque
visite de la page ?
<http://code.seebz.net/p/imagethumb/> ?
Ces deux méthodes sont à peu près équivalentes, l'une étant un simple
enrobage de l'autre.
Post by Le Fou
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
Le Fou
2014-11-06 19:34:49 UTC
Permalink
Post by Olivier Miakinen
Post by Le Fou
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/
Fredchou
2014-11-06 21:28:43 UTC
Permalink
Post by Le Fou
Post by Olivier Miakinen
Post by Le Fou
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:***@nospam.free.fr.invalid
Une Bévue
2014-11-07 04:08:57 UTC
Permalink
Post by Fredchou
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;
}
Le Fou
2014-11-07 19:25:21 UTC
Permalink
Post by Une Bévue
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/
Continuer la lecture sur narkive:
Loading...