prendre une partie d'image

ViPHP
ViPHP | 3607 Messages

28 oct. 2010, 08:41

@AB: je suis en train de plancher sur ma partie admin pour justement faire le crop au bon endroit, avec du drag & drop etc...
Si tu veux je pourrais te filer les sources une fois finies ;)

Eléphanteau du PHP | 10 Messages

28 oct. 2010, 09:40

Merci à vous tous AB , jojolapine et merci pour vos réponses.
Merci aussi à moogli qu'elle ma filé plusieurs sources
Au fait pour mon script, j’ai fait un calcule de la proportion entre largeur et hauteur à partir des dimensions maxi, et la même chose à partir des dimensions réelles de l'image : j'ai comparé ensuite les deux en redimensionnant dans le sens approprié selon que le résultat est positif ou négatif.
Finalement, mon code marche :),
Cava me fait plaisir jojolapine de me filler quelque chose pour le crop, et si je trouverai quelque chose, je la posterai au forum
Voici le code de redimensionnement proportionnel.
<html>
<head></head>
<body>
	<!--On affiche le formulaire d'envoi d'une image-->
	<center>
	<br /><hr />

	<form method="post" enctype="multipart/form-data" action="upload.php">
	<p>
	
	
	
	   Le nom de l'image redimensionner avec 95 ,95
	   <input type="text" name="video"><br><br>
	   
	  
	   
	<input type="file" name="fichier" size="30">
	<input type="submit" name="upload" value="Uploader">
	</p>
	</form>
	</center>
	
  </body>
  </html>

<?php


$nomImage=$_POST['video'];

if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'upload/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
	
	$ext = substr($_FILES['fichier']['name'], strrpos($_FILES['fichier']['name'], '.'));

	$name_file = $nomImage.$ext;
	echo $name_file;

	
	//fonction pour changer les dimentions des fichiers
  function redimensionner($file, $maxwidth, $maxheight) {

list($rawwidth, $rawheight, $type) = @getimagesize($file);

				if ($maxwidth < $rawwidth && $rawwidth >= $rawheight) {   
				$width =  $maxwidth;   
				$height = ($width / $rawwidth) * $rawheight;  }   
				
				if ($maxheight < $rawheight && $rawheight >= $rawwidth) {   
				$height = $maxheight;   
				$width = ($height /  $rawheight) * $rawwidth;  }  
 	
 
				if($height > $maxheight) {  
				$width = ($maxheight / $height) * $width;  
				$height = $maxheight; } 
				
				
				
				
  $imgbuffer = imagecreatetruecolor($width, $height);

  switch($type) {

    case 1: $image = imagecreatefromgif($file); break;

    case 2: $image = imagecreatefromjpeg($file); break;

    case 3: $image = imagecreatefrompng($file); break;

    case 4: $image = imagecreatefrombmp($file); break;

    default: exit("Tried to create thumbnail from $file: not a valid image");

  }

  if (!$image) exit("Image creation from $file failed for an unknown reason. Probably not a valid image.");

  else {

    imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $width, $height, $rawwidth, $rawheight);

    imageinterlace($imgbuffer);

    switch($type) {

	
	
	
      case 1: $image = imagegif($imgbuffer, $file, 80); break;

      case 2: $image = imagejpeg($imgbuffer, $file, 80); break;

      case 3: $image = imagepng($imgbuffer, $file, 7); break;

  

    }

  }

}


if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )

{

  exit("Nom de fichier non valide");

}

  else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )

{

  exit("Impossible de copier le fichier dans $content_dir");

} 

redimensionner($content_dir.$name_file,171, 107);

}
?>


ViPHP
AB
ViPHP | 5818 Messages

28 oct. 2010, 13:53

@AB: je suis en train de plancher sur ma partie admin pour justement faire le crop au bon endroit, avec du drag & drop etc...
Si tu veux je pourrais te filer les sources une fois finies ;)
Oui ce serait intéressant que tu poste le code dans les contributions.

Si j'ai compris le fonctionnement cela demande que tu ouvres l'image, ensuite que l'on puisse définir un cadre de sélection et enfin que l'on télécharge l'image recadrée, soit l'équivalent de la fonction recadrage d'un logiciel photo + redimensionnement + téléchargement.

Sur le principe c'est assez sympa mais à partir du moment où il y a du travail à faire sur l'image j'ai tendance à conseiller l'utilisation d'un logiciel photo car le résultat est bien meilleur. Par exemple dans mes parties admin il y a la possibilité d'utiliser le redimensionnement php mais les admins ne l'utilisent pas et préfèrent télécharger directement les photos redimensionnées car ils y gagnent en temps et en qualité. En temps dès qu'il y a plus d'une ou deux photos à télécharger et en qualité toujours car le redimensionnement php donne une qualité inférieure (bien qu'acceptable) à celui d'un logiciel photo (peut-être cela vient de l'accentuation des contours qui n'est pas pris en charge par php...) Pour une meilleure qualité et plus de possibilités peut-être faudrait-il aller voir du côté de ImageMagick...

Cela dit ton code sera toujours intéressant à voir :)

Eléphanteau du PHP | 10 Messages

02 nov. 2010, 15:37

Si j'ai compris le fonctionnement cela demande que tu ouvres l'image, ensuite que l'on puisse définir un cadre de sélection et enfin que l'on télécharge l'image recadrée, soit l'équivalent de la fonction recadrage d'un logiciel photo + redimensionnement + téléchargement.

Voici un scripte qui marche à 100% et qui répond a ce que tu veux
Cdt
http://www.webmotionuk.co.uk/php-jquery ... -and-crop/

ViPHP
AB
ViPHP | 5818 Messages

02 nov. 2010, 18:29

Voici un scripte qui marche à 100% et qui répond a ce que tu veux
Cdt
http://www.webmotionuk.co.uk/php-jquery ... -and-crop/
Effectivement j'ai testé et ça fonctionne bien. Mise à part la gestion des erreurs... mais bon c'est une très bonne base pour faire du crop en choisissant visuellement la zone.

Bibliothèque GD oblige, c'est comme je le disais plus haut un peu moins performant qu'un recadrage puis redimensionnement dans un logiciel photo, mais pour ceux qui n'exigent pas la meilleure qualité, c'est un bon outil qui donne des résultats très corrects.

Eléphanteau du PHP | 10 Messages

02 nov. 2010, 19:05

Je suis entrain de faire une petite modification, et je suis toujours bloqué.
J'essaye de faire une zone de text pour donner un nom à l’image thumb.
stocké la nom de thumbs dans $thumb_image_name puis enregistrer l'image avec.si ta une idée je suis à l'écoute