2016-03-16 5 views
3

J'ai ce code qui télécharge des images avec des filigranes. Le code fonctionne correctement, mais la fonction de filigrane redimensionne toutes les images à une faible largeur et hauteur. Je veux conserver la taille après avoir ajouté le filigrane. Je crois que le problème est en fonction mais je ne sais pas comment le réparer.Téléchargement d'image PHP avec filigrane

if(isset($_FILES)){ 
    $file = $_FILES['image']; 
    $allowedExts = array('jpg','png','gif','jpeg'); 
    $uploadsDirectory = "imgupload/"; 
    $maxSize = 2000000; 

    for($i = 0; $i < count($file['name']); $i++){ 
     $filetmpname = $file['tmp_name'][$i];  
     $errors = array(); 
     $filename = $file['name'][$i]; 
     $filetext = strtolower(end(explode('.',$filename))); 
     $filesize = $file['size'][$i]; 
     $filetmpname = $file['tmp_name'][$i]; 

     if(in_array($filetext, $allowedExts) === FALSE){ 
      $errors[] = "Extension is not allowed"; 
     } 

     if($filesize > $maxSize){ 
      $errors[] = "File Size must be less than {$maxSize} KB"; 
     } 

     if(empty($errors)){ 
      $random = rand(0,199); 
      $destination = $file['name'][$i] = $uploadsDirectory. $random."_".date("d-m-Y") . "_" . $file['name'][$i]; 
      $upload_status = move_uploaded_file($filetmpname, $destination); 

      if($upload_status){ 
       $new_name = $uploadsDirectory.$random."_".date("d-m-Y") . "_" .".jpg"; 
       if(watermark_image($destination, $new_name)) 
        $demo_image = $new_name; 
      } 
     } 
    } 
} 

Fonction Filigrane:

$image_path = "images/water.png"; 

function watermark_image($oldimage_name, $new_image_name) 
    { 
     global $image_path; 
     list($owidth,$oheight) = getimagesize($oldimage_name); 
     $width = $height = 300;  
     $im = imagecreatetruecolor($width, $height); 
     $img_src = imagecreatefromjpeg($oldimage_name); 
     imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight); 
     $watermark = imagecreatefrompng($image_path); 
     list($w_width, $w_height) = getimagesize($image_path);   
     $pos_x = $width - $w_width; 
     $pos_y = $height - $w_height; 
     imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height); 
     imagejpeg($im, $new_image_name, 100); 
     imagedestroy($im); 
     unlink($oldimage_name); 
     return true; 
    } 

Répondre

3

Vous obtenez la taille de l'image existante ici:

list($owidth,$oheight) = getimagesize($oldimage_name); 
$width = $height = 300;  

C'est là où il fait la différence de taille d'image:

imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight); 

http://php.net/manual/en/function.imagecopyresampled.php

+0

cette fonction de filigrane je l'ai trouvé dans un autre emplacement et ajouté à mon code, mais l'image de taille re-redimensionner je ne sais pas comment me fixe ce problème aide s'il vous plaît @ryantxr –

+0

Vérifiez la documentation PHP. Vous verrez une description complète de la fonction et comment elle fait le redimensionnement de l'image. – ryantxr

+0

problème de redimensionnement j'ai corrigé maintenant mais j'ai un autre problème si l'image png ou gif il me donne (n'est pas un fichier PNG valide) ou (n'est pas un fichier JPG valide) comment peut résoudre ce problème dans '$ img_src = imagecreatefromjpeg ($ oldimage_name); ' –