2016-05-02 1 views
0

Mon site peut télécharger des photos, le processus fonctionne bien sur un ordinateur. Si je télécharge une image par le biais de mobile est en rotation. J'ai vu que c'était un problème connu et a une solution.
J'essaie une des solutions et je reçois une erreur lors du téléchargement d'une image dans un dossier:php imagerotate() fonction

move_uploaded_file() expects parameter 1 to be string, resource given.

Voici le code que j'utilise pour faire pivoter l'image:

$exif = exif_read_data($new_img['tmp_name']); 
if (!empty($exif['Orientation'])) { 

    $file = imagecreatefromjpeg($new_img['tmp_name']); 
    switch ($exif['Orientation']) { 
     case 3: 
      $new_img['tmp_name'] = imagerotate($file, 180, 0); 
      break; 

     case 6: 
      $new_img['tmp_name'] = imagerotate($file, -90, 0); 
      break; 

     case 8: 
      $new_img['tmp_name'] = imagerotate($file, 90, 0); 
      break; 
    } 
} 

move_uploaded_file($new_img['tmp_name'], $UploadDirectory.$NewFileName) 
+0

'imagerotate' retourne une ressource au fichier au lieu de son nom comme une chaîne. Vous aurez besoin du nom de fichier. – dan08

+0

Je n'ai pas compris, pouvez-vous expliquer s'il vous plaît? – allpnay

Répondre

1

Vous êtes stocker la valeur de retour de imagerotate comme si c'était le nom de fichier.

$new_img['tmp_name'] = imagerotate($file, 180, 0); 

Mais ce n'est pas parce que imagerotate renvoie une ressource.

Il suffit donc de changer toutes ces lignes:

$new_img['tmp_name'] = imagerotate($file, 180, 0); 

avec

imagerotate($file, 180, 0); 

Je viens d'apprendre imagerotate existait. Je ne suis pas sûr exactement comment cela fonctionne. Vous devrez peut-être enregistrer le fichier à un moment donné.

0

je l'ai changé:

case 3: 
    $rotate = imagerotate($file, 180, 0); 
    imagejpeg($rotate,$new_img['tmp_name']); 
break;