Redimensionnement images

Résolu
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   -  
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

y aurait-il un moyen de redimensionné une image
quand elle est au format paysage, que la hauteur soit réduite à 65px
quand elle est au format portrait, que la largeur soit réduite à 65px

Qui peut m'aider ??

7 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Essaye avec ça :
<?php
$image_ressource = 'image.png';
$size = getimagesize($image_ressource);
$largeur = $size[0];
$hauteur = $size[1];

if($largeur > $hauteur) {
	// Format paysage
	$n_largeur = 65;
	$qu = ceil($largeur/$n_largeur);
	$n_hauteur = ceil($hauteur/$qu);
	
	header("Content-type: image/png");
	$image = imagecreatefrompng($image_ressource);
	$miniature = imagecreatetruecolor($n_largeur,$n_hauteur);
	imagecopyresampled($miniature, $image, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur);
	imagepng($miniature);
} else {
	// Format portrait
	$n_hauteur = 65;
	$qu = ceil($hauteur/$n_hauteur);
	$n_largeur = ceil($largeur/$qu);
	
	header("Content-type: image/jpeg");
	$image = imagecreatefromjpeg($image_ressource);
	$miniature = imagecreatetruecolor($n_largeur,$n_hauteur);
	imagecopyresampled($miniature, $image, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur);
	imagepng($miniature);
}
?>
1
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
<img src="tonimage.png" alt="Texte alternatif ; !obligatoir!" style="max-width:65px;max-height:65px;" />
0
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10
 
Désolé je n'ai pas précisé,

c'est redimensionnement lors de l'upload sur le site
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Utilise la bibliothèque GD.
Tu trouveras toutes les fonctions nécessaires ici.
Pour savoir si elle est au format paysage ou en portrait, récupère la largeur et la hauteur puis fait une conditions "si la largeur est plus grande que la hauteur" « if($largeur > $hauteur) ».
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10
 
ok donc en gros il faudrait

<?php
$source = imagecreatefromjpeg("couchersoleil.jpg"); // La photo est la source

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);

if($largeur_source > $hauteur_source)
{
      $destination = imagecreatetruecolor(65, 65); // On crée la miniature vide

}else{
      $destination = imagecreatetruecolor(65, 65); // On crée la miniature vide
}

// MAIS j'y pense, il faudrait, je ne sais pas si c'est possible qu'il redimensionne si hauteur> largeur, largeur=65 et si largeur > hauteur, hauteur=65 et l'autre coté se redimensionne automatiquement mais il l'image final est 65x65 (mais pas écrasé!!) (Je ne sais pas si je suis très claire !)
// On redimensionne et après on récupère 65x65 pour voir ce que l'on veux

$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);

// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);

// On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
imagejpeg($destination, 'mini_couchersoleil.jpg');
?>
0
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10
 
Pas d'idées ?
0
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10
 
Sa fonctionne mais se que je veux c'est :

si la largeur > hauteur, alors hauteur = 65
si la hauteur > largeur , alors largeur = 65

j'ai échangé ton code si qui donne
								$image_ressource = ''.$dossier . $nom_changer . $fichier2.'';
$size = getimagesize($image_ressource);
$largeur = $size[0];
$hauteur = $size[1];

if($largeur > $hauteur) {
	// Format paysage
	$n_hauteur = 65;
	$qu = ceil($hauteur/$n_hauteur);
	$n_largeur = ceil($largeur/$qu);
	
	header("Content-type: image/png");
	$image = imagecreatefromjpeg($image_ressource);
	$miniature = imagecreatetruecolor($n_largeur,$n_hauteur);
	imagecopyresampled($miniature, $image, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur);
	imagepng($miniature);
	
	
} else {
	// Format portrait
	$n_largeur = 65;
	$qu = ceil($largeur/$n_largeur);
	$n_hauteur = ceil($hauteur/$qu);
	
	header("Content-type: image/jpeg");
	$image = imagecreatefrompng($image_ressource);
	$miniature = imagecreatetruecolor($n_largeur,$n_hauteur);
	imagecopyresampled($miniature, $image, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur);
	imagepng($miniature);
}


Mais je n'ai pas de résultat, juste l'adresse url de la page actuelle

Donc comment faire pour que ça fonctionne ?
0
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10
 
Ex:
après réduction si une image fait 85x65, dans cette image, centré l'image a 65x65 px
0
griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   10 > griko Messages postés 343 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense qu'il faudrait utilisé un recadrage, non ?
0