8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'aurais besoin d'aide, je vous explique mon problème, j'ai un site ou j'affiche des images stockées en base de données (fichier jpeg dans un dossier et chemin de l'image dans un champ texte). Mon site fonctionne très bien que si mes images sont en 100px par 100px (carré).

J'ai créé un formulaire qui upload les images en base mais il faut donc que l'image soit au préalable au bon format, mais cela n'est pas évident pour le client.

Premier point:

Ce que j'aimerais faire c'est que lors de l'upload, l'image soit redimensionnée en prenant la plus grande valeur entre la largeur ou la hauteur en 100px:

Si une image fait 1000x600 j'aimerais qu'elle soit redimensionnée en 100x60 ou inversement si l'image est en 800x1200 qu'elle soit redimensionnée en 67x100

Deuxieme point:

L'iamge une fois redimensionnée n'est pas en carré, comment a l'affichage (ou avant) rajouter des bande blanches ou noir de maniere egale de chaque cote pour que l'image soit carré.

Si on a l'image en 100x60 comment rajouter a gauche et droite deux bande de 20px pour que l'image ait une largeur de 100px ?

suis-je claire ? Comment faire ceci ? ou si vous avez une meilleur solution ?

Merci par avance
Merci pour ta reponse j'ai finalement trouiver un maniere de le faire


/**
 * @param string cheminVersImageAModifier
 * @param int nouvelleLargeur nouvelle largeur en pixels
 * @param int nouvelleHauteur nouvelle hauteur en pixels
 */
function redimensionne($cheminVersImageAModifier,$largeur,$hauteur) {
	/* Dimensions actuelles */
	list($largeurImageSource,$hauteurImageSource) = getimagesize($cheminVersImageAModifier);
	
	/* Nouvelles dimensions */
	if ($largeurImageSource > $hauteurImageSource) {
		$nouvelleLargeur = $largeur;
		$nouvelleHauteur = ($hauteurImageSource * $largeur ) / $largeurImageSource;
	} else {
		$nouvelleLargeur = ($largeurImageSource * $hauteur ) / $hauteurImageSource;
		$nouvelleHauteur = $hauteur;
	}
	
	/* L'image vide de destination */
	$destination = imagecreatetruecolor($nouvelleLargeur, $nouvelleHauteur) or die ("Erreur pour créer l'image");
	
	/* La couleur de fond*/
	ImageColorAllocate ($destination, 0, 0, 0);
	
	/* lecture de l'image a redimensionner */
	$data = explode(".",basename($cheminVersImageAModifier));
	
	/* contournement jpg */
	if (strtolower($data[1]) == 'jpg') {
		$data[1] = 'jpeg';
	}
	$fonction = 'imagecreatefrom'.strtolower($data[1]);
	$source = $fonction($cheminVersImageAModifier);
	
	/* determination des coordonées de l'image
	
	/* Redimensionnement */
	ImageCopyResampled($destination, $source, 0, 0, 0, 0, $nouvelleLargeur, $nouvelleHauteur, $largeurImageSource, $hauteurImageSource);
	
	
	/* L'image vide de destination finale*/
	$destinationFinale = imagecreatetruecolor($largeur, $hauteur) or die ("Erreur pour créer l'image");
	
	/* La couleur de fond*/
	ImageColorAllocate ($destinationFinale, 0, 0, 0);

	$dst_x = ($largeur-$nouvelleLargeur)/2;
	$dst_y = ($hauteur-$nouvelleHauteur)/2;
	imagecopy ($destinationFinale,$destination, $dst_x, $dst_y, 0, 0, $nouvelleLargeur, $nouvelleHauteur );
	
	/* L'enregistrement */
	$fonction = 'image'.strtolower($data[1]);
	$fonction($destinationFinale, $cheminVersImageAModifier);
}