Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Redimensionner et Stocker des Images avec Laravel
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Redimensionner et Stocker des Images avec Laravel

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

Gérer efficacement les images de profil dans une application Laravel peut être complexe.

Sans une méthodologie claire, vous risquez de rencontrer des problèmes de stockage et de performance.

Cet article vous guide à travers un processus structuré pour redimensionner et sauvegarder des images, assurant une gestion optimale.

Table de matière
Sauvegarder l'image profil LaravelRedimensionner image miniature LaravelSauvegarder miniature image LaravelCode store() avec Intervention ImageFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation

Dans cette section, nous allons expliquer en détail comment redimensionner et sauvegarder une image de profil dans une application Laravel. Le processus comprend trois étapes principales :

Schéma du redimensionnement d'image avec Laravel

Sauvegarder l'image profil Laravel

Lorsque l’utilisateur télécharge une image, nous devons d’abord vérifier si un fichier a bien été envoyé et s’il est valide. Ensuite, nous générons un nom de fichier unique basé sur l’ID de l’utilisateur et le nom d’utilisateur pour éviter les conflits de noms. Enfin, nous stockons le fichier dans un répertoire dédié (avatars/).

Voici le code pour cette étape :

				
					
 if (request()->hasFile('avatar') && request()->file('avatar')->isValid()) {
$ext = request()->file('avatar')->extension();
$filename = Str::slug($user->name) . '-' . $user->id . '.' . $ext;
$path = request()->file('avatar')->storeAs('avatars/' . $user->id, $filename);}

				
			
  • hasFile(‘avatar’) :Vérifie si le champ avatar contient un fichier.
  • isValid() :Vérifie si le fichier téléchargé est valide.
  • extension() :Récupère l’extension du fichier (JPEG, PNG, etc.).
  • Str ::slug($user->name) : Crée un nom de fichier lisible à partir du nom de l’utilisateur.
  • storeAs(‘avatars/’ . $user->id, $filename) :Stocke le fichier dans un dossier spécifique à l’utilisateur.

Redimensionner image miniature Laravel

Nous utilisons la bibliothèque Intervention Image pour manipuler l’image. Nous allons créer une miniature de l’image de profil en la redimensionnant à une taille spécifique (200×200 pixels dans cet exemple).

Le code pour redimensionner l’image est le suivant :

				
					
 $thumbnailImage = Image::make(request()->file('avatar'))
->fit(200, 200, function ($constraint) {
$constraint->upsize();
})
->encode($ext, 50);

				
			
  • Image ::make(request()->file(‘avatar’)) : Crée une instance de l’image à partir du fichier téléchargé.
  • fit(200, 200) :Redimensionne l’image à une taille de 200×200 pixels, en conservant ses proportions.
  • $constraint->upsize() :Empêche l’agrandissement de l’image si elle est plus petite que la taille cible.
  • encode($ext, 50) :Encode l’image avec le même format (JPEG ou PNG) en réduisant la qualité à 50% pour optimiser la taille du fichier.
Infos : Lorsque vous utilisez la bibliothèque Intervention Image pour manipuler des images dans Laravel, il est essentiel de gérer correctement les erreurs et les exceptions qui peuvent survenir, notamment lors du téléchargement de fichiers ou de la manipulation des images.

Sauvegarder miniature image Laravel

Une fois l’image redimensionnée, nous devons sauvegarder la miniature dans un répertoire séparé. Nous utilisons Storage pour enregistrer l’image sur le disque.

Voici le code pour sauvegarder la miniature :

				
					
 $thumbnailPath = 'avatars/' . $user->id . '/thumbnail/' . $filename;
Storage::put($thumbnailPath, $thumbnailImage);

				
			
  • avatars/’ . $user->id . ‘/thumbnail/’ :Crée un dossier pour la miniature de l’utilisateur dans un sous-répertoire thumbnail/.
  • Storage ::put($thumbnailPath, $thumbnailImage) : Sauvegarde l’image redimensionnée dans le stockage Laravel.

Code store() avec Intervention Image

Voici le code complet pour la méthode store() dans le UserController

				
					
 public function store(Request $request)
{
$user = auth()->user();
$request->validate([
'name' => ['required', 'string', 'min:3', 'max:20', Rule::unique('users')->ignore($user->id)],
'email' => ['required', 'string', 'email', Rule::unique('users')->ignore($user->id)],
'avatar' => ['sometimes', 'nullable', 'file', 'image', 'mimes:jpeg,png', 'dimensions:min_width=200,min_height=200'],
]);
if ($request->hasFile('avatar') && $request->file('avatar')->isValid()) {
// Supprimer l'ancien répertoire d'avatars si nécessaire
if (Storage::exists('avatars/' . $user->id)) {
Storage::deleteDirectory('avatars/' . $user->id);
}
// Générer un nom unique pour l'image
$imageName = time() . '-' . $request->file('avatar')->getClientOriginalName();
// Chemin de destination pour l'image principale
$destinationPath = public_path('avatars/' . $user->id . '/');
if (!file_exists($destinationPath)) {
mkdir($destinationPath, 0777, true);
}
// Lire l'image
$image = Image::read($request->file('avatar'));
// Sauvegarder l'image principale
$image->save($destinationPath . $imageName);
// Générer une miniature et la sauvegarder
$destinationPathThumbnail = public_path('avatars/' . $user->id . '/thumbnail/');
if (!file_exists($destinationPathThumbnail)) {
mkdir($destinationPathThumbnail, 0777, true);
}
$image->resize(200, 200, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
$image->save($destinationPathThumbnail . $imageName);
return back()
->with('success', 'Profil et avatar mis à jour avec succès!')
->with('imageName);
}

				
			

En résumé

  • Sauvegarde de l’image originale :L’image téléchargée est stockée dans un répertoire spécifique à l’utilisateur.
  • Redimensionnement pour la miniature :L’image est redimensionnée à une taille de 200×200 pixels.
  • Sauvegarde de la miniature :La miniature est sauvegardée dans un sous-dossier thumbnail du dossier avatars/.

Cette approche garantit que vous avez une image de profil de haute qualité pour l’utilisateur et une miniature optimisée pour une utilisation dans les pages où une image plus petite est nécessaire (par exemple, dans les aperçus).

Si en veut tester la validation d’image en va enter une fichier invalide le résultat s’affiche doit être comme suivante

Erreur de fichier image avatar dans Laravel

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment sauvegarder une image de profil dans Laravel ?
Pour sauvegarder une image de profil dans Laravel, commencez par vérifier si un fichier a été téléchargé et s’il est valide. Utilisez ensuite un nom de fichier unique basé sur l’ID utilisateur pour éviter les conflits. Stockez le fichier dans un répertoire dédié, par exemple, ‘avatars/’. Cette méthode garantit que chaque utilisateur a un espace de stockage distinct pour ses images.
Comment redimensionner une image avec Intervention Image dans Laravel ?
Utilisez la bibliothèque Intervention Image dans Laravel pour redimensionner les images. Créez une instance de l’image à partir du fichier téléchargé, puis appliquez la méthode fit(200, 200) pour ajuster l’image à 200×200 pixels tout en conservant ses proportions. Assurez-vous d’empêcher l’agrandissement si l’image originale est plus petite que la taille cible avec $constraint->upsize().
Comment sauvegarder la miniature d'une image dans un répertoire séparé ?
Après avoir redimensionné l’image, sauvegardez la miniature dans un répertoire distinct. Utilisez la classe Storage pour mettre l’image redimensionnée dans un sous-répertoire ‘thumbnail/’ spécifique à l’utilisateur. Cette approche permet de séparer clairement les images originales des miniatures, facilitant ainsi la gestion et l’affichage des images.
Quel est le code complet pour gérer le stockage des images dans Laravel ?
Le code complet pour gérer le stockage des images dans Laravel inclut la validation des entrées, la génération de noms de fichier uniques, et l’utilisation des méthodes de la bibliothèque Intervention Image pour redimensionner et sauvegarder les images. Le processus implique de supprimer les anciennes images avant de stocker de nouvelles, garantissant ainsi un espace de stockage propre et à jour.
Comment gérer les erreurs lors de la manipulation d'images dans Laravel ?
Lors de la manipulation d’images avec Laravel, il est crucial de gérer les erreurs et exceptions. Assurez-vous que le fichier téléchargé est valide avant de procéder aux opérations. Utilisez des blocs try-catch pour capturer les exceptions potentielles lors du redimensionnement ou du stockage des images, et fournissez des messages d’erreur clairs pour faciliter le dépannage.

Conclusion

En appliquant ces étapes, vous pourrez efficacement gérer les images de profil dans Laravel. Quels autres aspects du stockage d’images souhaitez-vous explorer ?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Redimensionner et Stocker des Images avec Laravel

© Alphorm - Tous droits réservés