2010-07-19 36 views
3

Disons que j'ai téléchargé une image. Je peux obtenir son répertoire temporaire, puis l'enregistrer avec move_uploaded_file() mais si je voulais aussi créer un pouce et enregistrer les deux dans un dossier?Télécharger l'image, créer son pouce puis enregistrer

Je sais comment enregistrer l'image téléchargée, mais je ne sais pas comment commencer à manipuler une image et l'enregistrer après avoir créé un pouce.

+1

Vous n'avez pas besoin de mettre '[PHP]' dans un titre, c'est à ça que servent les balises. – Wrikken

Répondre

1

Je toujours utiliser Vérot PHP Upload classe et toujours eu du succès avec elle. Cette classe PHP est vraiment simple à mettre en œuvre et peut manipuler une image comme vous le souhaitez. Il peut également enregistrer l'image dans le dossier spécifié.

Vous pouvez le télécharger à partir here

Pour voir des démonstrations et la documentation facile de la visite de classe Upload http://www.verot.net/php_class_upload_samples.htm?PHPSESSID=5375147e959625e56e0127f3458a6385

Voici un exemple simple, je suis arrivé sur le site Web

//How to use it? 
//Create a simple HTML file, with a form such as: 

<form enctype="multipart/form-data" method="post" action="upload.php"> 
    <input type="file" size="32" name="image_field" value=""> 
    <input type="submit" name="Submit" value="upload"> 
</form> 

//Create a file called upload.php: 

    $handle = new upload($_FILES['image_field']); 
    if ($handle->uploaded) { 
     $handle->file_new_name_body = 'image_resized'; 
     $handle->image_resize   = true; 
     $handle->image_x    = 100; 
     $handle->image_ratio_y  = true; 
     $handle->process('/home/user/files/'); 
     if ($handle->processed) { 
      echo 'image resized'; 
      $handle->clean(); 
     } else { 
      echo 'error : ' . $handle->error; 
     } 
    } 

//How to process local files? 
//Use the class as following, the rest being the same as above: 

    $handle = new upload('/home/user/myfile.jpg'); 
1

vous avez besoin de php gd ou de imagemagick. voici un exemple rapide de redimensionnement en utilisant GD (à partir du manuel):

<?php 
// File and new size 
$filename = 'test.jpg'; 
$percent = 0.5; 

// Content type 
header('Content-type: image/jpeg'); 

// Get new sizes 
list($width, $height) = getimagesize($filename); 
$newwidth = $width * $percent; 
$newheight = $height * $percent; 

// Load 
$thumb = imagecreatetruecolor($newwidth, $newheight); 
$source = imagecreatefromjpeg($filename); 

// Resize 
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

// Output 
imagejpeg($thumb, 'thumbs/thumb1.jpg'); 
?> 
+0

Comment sauvegarder l'image dans un dossier au lieu de l'afficher? –

+0

le deuxième paramètre de la fonction imagejpeg est le nom de fichier. J'ai mis à jour l'exemple. aussi, consultez la page man: http://php.net/manual/en/function.imagejpeg.php –

+0

génial, merci pour cela !! – Spork

3

La bibliothèque GD rend ce super facile. Vous voudrez calculer les dimensions de votre image originale pour que vous conserviez votre rapport d'aspect, alors c'est juste un cas de rééchantillonnage de l'image dans une taille plus petite. Voici un bon tutoriel qui explique clairement tout: http://www.phptoys.com/e107_plugins/content/content.php?content.46

0

Utilisez Image magick. postes de contrôle précédents sur un débordement de pile Imagemagick thumbnail generation with php - using -crop PHP: Creating cropped thumbnails of images, problems Image processing class in PHP http://www.imagemagick.org/

define('THUMB_WIDTH', 60); 
define('THUMB_HEIGHT', 80); 
define('MAGICK_PATH','/usr/local/bin/'); 

function makeThumbnail($in, $out) { 
    $width = THUMB_WIDTH; 
    $height = THUMB_HEIGHT; 
    list($w,$h) = getimagesize($in); 

    $thumbRatio = $width/$height; 
    $inRatio = $w/$h; 
    $isLandscape = $inRatio > $thumbRatio; 

    $size = ($isLandscape ? '1000x'.$height : $width.'x1000'); 
    $xoff = ($isLandscape ? floor((($inRatio*$height)-$width)/2) : 0); 
    $command = MAGICK_PATH."convert $in -resize $size -crop {$width}x{$height}+{$xoff}+0 ". 
     "-colorspace RGB -strip -quality 90 $out"; 

    exec($command); 
}