Traitement d'image

Répondre
jacque99
le 11/10/2010 à 18:00
jacque99
Bonjour tout le monde,
Au fait, j'ai deux scripts qui fonctionnent bien, la première :
En choisi une image via un formulaire, puis en redimensionne l'image et finalement en enregistre avec un nouveau nom saisie par l'utilisateur.
Le 2e script :
En prend une partie d'une image.
Ce que j'ai essayé de faire :
Modifier le 2e scripte pour me permettre de :
Choisir l'image via un formulaire
Prendre la partie d'image
Enregistrer l'image avec un nouveau nom saisi par l'utilisateur.
J'ai essayé plusieurs fois pour mélanger les deux scripts, mais je ss tout le temps bloqué.
Je suis à l'écoute de vos conseils
Merci
Voici mes scriptes

//**************************************************************************************Premier script
//****************************************index.php

<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>


//****************************************upload.php

<?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;

}

elseif ($maxheight < $rawheight && $rawheight >= $rawwidth) {

$height = $maxheight;

$width = ($height /

$rawheight) * $rawwidth;

}

else {

$height = $rawheight;

$width = $rawwidth;

}

$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,95,

95);

}
?>


//***************************************************************************************Deuxième scripte : Prendre une partie de l'image
index.php

<?php 
function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource.
//getting the image dimensions
list($width_orig, $height_orig) = getimagesize($imgSrc);
$myImage = imagecreatefrompng($imgSrc);
$ratio_orig = $width_orig/$height_orig;

if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
$new_height = $thumbnail_width/$ratio_orig;
$new_width = $thumbnail_width;
} else {
$new_width = $thumbnail_height*$ratio_orig;
$new_height = $thumbnail_height;
}

$x_mid = $new_width/2; //horizontal middle
$y_mid = $new_height/2; //vertical middle

$process = imagecreatetruecolor(round($new_width), round($new_height));

imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
$thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width,

$thumbnail_height);

imagedestroy($process);
imagedestroy($myImage);
return $thumb;
}

//Create the thumbnail
$newThumb = CroppedThumbnail("monImage.png",200,200);

// And display the image...
header('Content-type: image/jpeg');
imagejpeg($newThumb);
?>
jacque
LA GLOBULE
le 11/10/2010 à 18:08
LA GLOBULE
Merci d'utiliser le BB-Code.

Si tu ne sais pas ce que c'est, quand tu écris un message, juste au dessus du bouton "envoyer", il y a un lien "Le BB-Code", clic dessus, tu apprendras ainsi comment poster du code sur le forum tout en couleur.

En fait, il n'y a rien de plus fatiguant que de lire du code sans coloration syntaxique.
moogli
le 11/10/2010 à 21:54
moogli
salut,

la deuxième fonction
1/ n'est utile qu'avec une image png!
2/n'enregistre pas une image sur le disque dur mais est faites pour l'afficher
3/ ton code indique l'affichage d'une image jpeg et non gif, heureusement que les navigateur ne s’arrête pas qu'a ça ;)

ta fonction redimensionner permet "juste" de faire une miniature de l'image. la fonction cropmachin permet de prendre qu'une partie.
pour l'avoir sur le disque dur, il te suffit d'utiliser le deuxième paramètre de imagepng.

pour la rendre utilisable avec d'autre type d'image il te faut faire la même chose qu'avec la fonction précédente.

Je te conseil de créer une classe pour faire tous ça (une méthode de redimensionnement pour chaque type, une méthode de "crop" pour chaque type d'image et deux trois méthode pour l'utilisation de tous ça).

@+
Il en faut peu pour être heureux !!!!!
jacque99
le 12/10/2010 à 10:16
jacque99
Bonjour Moogli

Pour la deuxième fonction :
1.ça me suffit qu'elle soit compatible avec png.
2. exactement je voulais juste prendre une partie de l'image en l'enregistre après.
3. la fonction redimensionner je l'ai pas besoin, j'ai juste montré que je peux faire un upload via un formulaire et enregistre par la suite.
et pou le moment je cherche faire un upload via un formulaire, puis prendre une partie de l'image avec la fonction cropmachin , et enregistre l'image après.
je vais ressayer de remodifier mon code, car je suis débutant en programmation
jacque
moogli
le 12/10/2010 à 11:21
moogli
donc regarde le deuxième paramétre de la fonction imagepng dans la doc :)

@+
Il en faut peu pour être heureux !!!!!
jacque99
le 12/10/2010 à 11:35
jacque99
dans la doc ou dans google cé la meme réponse.
ta pas un lien stp?
jacque
moogli
le 13/10/2010 à 10:17
moogli
Hé ben http://www.php.net/imagepng

Le pire c'est qu'il s'agit de l'utilisation faite dans la premiere fonction. Ceci me conduit a dire que tous ceci est du copier collé ?

@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours