Maison  >  Article  >  développement back-end  >  Techniques de traitement d'images responsives en PHP

Techniques de traitement d'images responsives en PHP

WBOY
WBOYoriginal
2023-05-28 08:00:081216parcourir

随着移动互联网的发展,越来越多的用户使用移动设备浏览网站,而移动设备的屏幕大小和分辨率千差万别,这给网站开发者带来了新的挑战。为了能够在不同分辨率的屏幕上提供最佳的用户体验,响应式设计成为了现代网站开发的重要组成部分。而图片是网站设计中不可或缺的元素,因此如何处理网页中的图片来达到响应式效果也成为了开发者需要关注的问题。在本文中,我们将会介绍一些在PHP中实现响应式图片处理的技巧。

一、使用媒体查询

在响应式设计中,媒体查询是实现不同分辨率和设备显示效果的关键。通过使用不同的CSS样式,在不同的分辨率下呈现不同的页面效果。同样,在处理响应式图片时,我们也可以使用媒体查询来实现不同分辨率下显示不同大小的图片。通过设置不同分辨率下的图片大小,可以减小页面加载时间,提升用户体验感。

在PHP中,通过媒体查询加载不同大小的图片可以按照以下步骤实现:

1.首先,我们需要根据不同的媒体查询条件,为每个媒体查询设置相应的CSS规则,例如:

@media only screen and (max-width: 480px) {
.image {

  background-image: url("small-image.jpg");
  height: 100px;
  width: 100px;

}
}

@media only screen and (min-width: 481px) and (max-width: 768px) {
.image {

  background-image: url("medium-image.jpg");
  height: 150px;
  width: 150px;

}
}

@media only screen and (min-width: 769px) {
.image {

  background-image: url("large-image.jpg");
  height: 300px;
  width: 300px;

}
}

上述代码中,我们定义了三个媒体查询条件并对应设置了三种不同大小的图片,分别是480px以下的小图片、480px~768px之间的中等大小图片和768px以上的大图片。

2.然后,在PHP代码中通过IF语句和条件判断来动态生成页面的HTML代码,根据当前设备屏幕分辨率来加载对应的媒体查询规则,实现不同分辨率下使用不同大小的图片,例如:

if ($device_resolution 1df0f78a227481b39bab01bcdc7ea27916b28748ea4df4d9c2150843fecfba68';
}
else if ($device_resolution > 480 && $device_resolution ed5f0c7d50a6064589c35f9ddf13580116b28748ea4df4d9c2150843fecfba68';
}
else {
echo '51ffbf4f87b926fd6cc7a5e088a16ffd16b28748ea4df4d9c2150843fecfba68';
}

Note : $device_resolution est une variable de la résolution d'écran actuelle obtenue par le code PHP.

2. Utiliser des vignettes

Dans le traitement d'images réactif, l'utilisation de vignettes est une technique courante. Il peut réduire la taille des fichiers image en réduisant la résolution et la taille des images, améliorer la vitesse de chargement des pages et améliorer l'expérience utilisateur. En PHP, nous pouvons générer dynamiquement des vignettes en utilisant des bibliothèques de traitement d'images telles que la bibliothèque GD et Imagick.

En prenant la bibliothèque GD comme exemple, nous pouvons générer des vignettes selon les étapes suivantes :

1 Récupérez le chemin et le nom de fichier de l'image originale, et définissez le. taille de la vignette selon les besoins et proportions, par exemple :

//Le chemin du fichier de l'image originale
$image_path = "uploads/image.jpg";

#🎜 🎜#//Définir la taille maximale de la vignette Largeur et hauteur

$max_width = 200;
$max_height = 200;

//Calculer le rapport des vignettes#🎜🎜 #$original_size = getimagesize($image_path);# 🎜🎜#$original_width = $original_size[0];

$original_height = $original_size[1];
$scale = min($max_width/$original_width , $max_height/$original_height);#🎜🎜 #
//Calculer la largeur et la hauteur de la vignette
$new_width = floor($scale * $original_width);
$new_height = floor ($scale * $original_height);

2. Utilisez la bibliothèque GD pour créer une nouvelle ressource image et une ressource image mise à l'échelle, et copiez l'image originale dans la nouvelle ressource image, par exemple : #🎜 🎜#
//Créer des vignettes Ressources d'image
$new_image = imagecreatetruecolor($new_width, $new_height);

//Obtenir des ressources d'image originales

$original_image = imagecreatefromjpeg ($image_path);

# 🎜🎜#//Copiez l'image originale dans la ressource miniature
imagecopyresampled($new_image, $original_image, 0, 0, 0, 0, $new_width, $new_height, $ original_width, $original_height);#🎜 🎜#

3. Enregistrez la vignette dans le répertoire spécifié, par exemple :


//Définissez un nouveau chemin d'enregistrement et un nouveau nom de fichier

$new_image_path = "uploads/small_image .jpg";


//Enregistrez la vignette dans le répertoire spécifié

imagejpeg($new_image, $new_image_path);

4 . Passez img dans le code HTML La vignette générée par le chargement de la balise, par exemple :


1bfb1ce50aec4601c09a0d10ae5bb9f2

#🎜 🎜#Remarque : Dans le code ci-dessus, la fonction imagejpeg est utilisée pour enregistrer la vignette au format JPEG. Si l'image originale est au format PNG, vous devez utiliser la fonction imagepng pour enregistrer la vignette au format PNG.


3. Utilisez le chargement paresseux

Dans le traitement d'image réactif, le chargement paresseux est une autre technique courante. Il peut retarder le chargement des images sur la page jusqu'à ce que l'utilisateur fasse défiler jusqu'à la zone visible afin de réduire le temps de chargement de la page et d'améliorer l'expérience utilisateur. En PHP, nous pouvons implémenter un chargement paresseux réactif en utilisant des frameworks front-end tels que jQuery.

En prenant jQuery comme exemple, nous pouvons suivre les étapes suivantes :

1 Ajoutez un attribut personnalisé (tel que data-src) à l'image qui doit être retardée. chargé et enregistrez le chemin de l'image d'origine dans cet attribut, par exemple :

613f0ebde202b193b20c5d4af3c9fd25# 🎜🎜 #

Remarque : placeholder.jpg est une image d'espace réservé, utilisée pour s'afficher lorsque l'image n'est pas chargée.

2. Utilisez le plug-in lazyload de jQuery pour charger des images paresseusement, par exemple :

//Présentation du plug-in lazyload

f62a17caff690fd0bb0fb2622c6e37222cacc6d41bbb37262a98f745aa00fbf0

//Chargement paresseux des images

$(function() {

$("img"). lazyload();#🎜 🎜#});

3. Chargez l'image lorsque la page défile jusqu'à la zone visible de l'image, par exemple :

< ;img class="lazy" data-src="original .jpg" src="placeholder.jpg" alt="Picture">

Remarque : dans le code ci-dessus, nous utilisons class=" paresseux" pour identifier les images qui doivent être chargées paresseusement et placer l'espace réservé. La figure est spécifiée comme attribut src. Lorsque la page défile jusqu'à la zone visible de l'image, le plug-in lazyload chargera automatiquement le chemin de l'image d'origine dans l'attribut data-src dans l'attribut src de la balise img.


Conclusion

Le traitement d'image réactif en PHP peut être obtenu grâce à des techniques telles que les requêtes multimédias, les vignettes et le chargement paresseux. Ces conseils peuvent nous aider à améliorer la vitesse de chargement des pages, à améliorer l'expérience utilisateur et à rendre le site Web plus adaptable à différents appareils et résolutions. J'espère que cet article vous aidera !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn