Configuration nginx :
Copier le code Le code est le suivant :
# Supposons qu'il existe un fichier sur le serveur : abc.jpg et que l'image originale est accessible via http://filefs.domain.com /fichier/abc.jpg. En fait, généralement, nous sauvegardons uniquement le contenu de "/file/abc.jpg" dans la base de données.
#Maintenant, nous devons réaliser que la vignette #abc.jpg.w320.jpg (w320, largeur 320px) est automatiquement générée par le serveur via http://filefs.domain.com/file/abc.jpg.w320. jpg. et renvoyer des données d'image.
# Les deux conditions suivantes doivent être remplies :
# 1. Si abc.jpg.w320.jpg existe, l'image ne sera pas régénérée
# 2. Si elle n'existe pas, les données de l'image seront renvoyées et enregistrées dans le même demande de fichiers image au serveur.
serveur {
écoute 80;
nom_serveur filefs.domain.com;
racine /var/www/http/filefs.domain.com;
emplacement / {
index index.html index.htm;
}
Emplacement ~ .( png|jpg|jpeg|gif)$ {
#Si le fichier n'existe pas, réécrivez dans le fichier de script autoimg.php qui génère l'image
PHP ; p Expire Max ;
}
#Si le fichier existe, définissez l'expiration ; temps, désactivez le journal d'accès
(-f $ request_filename) {
expire max ;
access_log off ; 00 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/ html;
}
location ~ autoimg.php$ {#Pour des raisons de sécurité, serveur de fichiers, seule la portée de ce fichier de script est soumise Traité par php
fastcgi_pass fastcgi_index index.php ; /usr/local/ nginx/conf/fastcgi_params;
}
}
Code php pour générer des fichiers image :
Copier le code Le code est le suivant :
$file = $_server ['request_uri'];//Request string/file/abc.jpg.w320.jpg
$desfile = $_server ['document_root'] $file; path/var/www/http/file/abc.jpg.w320.jpg
$dirname = dirname ($desfile) "/";
$filename = basename ($desfile);
if (preg_match ( "/( [ ^.]+.(png|jpg|jpeg|gif)).w([d]+).(jpg)/i", $filename, $m )) {
$srcfile = $dirname . $m [ 1 ];
$width = $m [3]; //Faire correspondre la largeur du fichier de sortie
320
320
( $srcfile )) { //Et le fichier n'existe pas
vignette ( $srcfile, $desfile, $width ) ; width) {b ob_start (); // Commencer à intercepter le flux de sortie
$ imageInfos = getimagesize ($ src); 1 ) {
$im = imagecreatefromgif ($src);
{
$im = imagecreatefrompng ($src) ;
( $dst_img, $im, 0, 0, 0, $largeur, $hauteur, $imageinfos [0], $ imageinfos [1] );
en-tête ( 'content-type:image/jpg' );
imagejpeg ($dst_img, null, 90) //Flux de fichier de sortie, 90 - qualité de compression, 100 représente la qualité la plus élevée. } }
$content = ob_get_contents ();//Obtenir le flux de sortie
//La sortie est dirigée vers la page Web, garantissant que les données de l'image sont remises lors de la première requête
@file_put_contents ( $des, $content );//Enregistrez le fichier
}
?>
Rendu :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!