2017-11-11 6 views
1

誰かが私を助けてください、ほとんどすべての髪が今行っている可能性があります。大きな画像をサイトにアップロードしようとすると問題が発生しました。私はこれを修正して以来、すべてが正常に動作しているようだ。私は10Mb + JPEGファイルでスクリプトをテストしたが、すべてが完璧に見える。しかし、私はちょうどsomeonesの携帯電話(4.9Mb)からJPEGをアップロードしようとしたが、私は500エラーが発生します。 PSの画像を見ると、幅は1054px、高さは1874px、高さは72dpiです。なぜこれが問題なのか、どのように回避するのか、誰でも助けてくれますか?画像を小さくすると(700ピクセル幅)、画像は正常にアップロードされますか?PHPは大規模な画像をアップロードする

誰も同じ問題がありましたか?ここに私のコードは、その下にある(携帯電話から一部が上下逆さまに一度アップロードされて来ていたとして)、その後、彼らは店に簡単にしているので、大容量のファイルのサイズを変更した画像を回転させます。私はそれをテストしたすべての画像が動作しているように見えます...この肖像画とは別に、それは愚かなワイドです!誰か助けてください!

$file_name = $_FILES['newPicture']['tmp_name']; 

correctImageOrientation($file_name); 
AdjustPicSize($file_name); 


function correctImageOrientation($file_name) { 
    if (function_exists('exif_read_data')) { 
    $exif = exif_read_data($file_name); 
    if($exif && isset($exif['Orientation']) || !isset($exif['Orientation'])) { 
     $orientation = $exif['Orientation']; 
     if($orientation != 1){ 
     $img = imagecreatefromjpeg($file_name); 
     $deg = 0; 
     switch ($orientation) { 
      case 3: 
      $deg = 180; 
      break; 
      case 6: 
      $deg = 270; 
      break; 
      case 8: 
      $deg = 90; 
      break; 
     } 
     if ($deg) { 
      $img = imagerotate($img, $deg, 0);  
     } 
     // then rewrite the rotated image back to the disk as $filename 
     imagejpeg($img, $file_name, 95); 
     } // if there is some rotation necessary 
    } // if have the exif orientation info 
    } // if function exists  
} 


function AdjustPicSize($file_name) 
{ 
    $maxDim = 800; 

     list($width, $height, $type, $attr) = getimagesize($file_name); 
     if ($width > $maxDim || $height > $maxDim) { 
      $target_filename = $file_name; 
      $ratio = $width/$height; 
      if($ratio > 1) { 
       $new_width = $maxDim; 
       $new_height = $maxDim/$ratio; 
      } else { 
       $new_width = $maxDim*$ratio; 
       $new_height = $maxDim; 
      } 
      $src = imagecreatefromstring(file_get_contents($file_name)); 
      $dst = imagecreatetruecolor($new_width, $new_height); 
      imagecopyresampled($dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
      imagejpeg($dst, $target_filename); // adjust format as needed 
     } 
} 

私はこのすべてにちょっと新鮮です!

+0

詳細は500エラーより詳細な診断に役立ちます。 PHPのログファイルをチェックして実際のエラーを確認できますか? – Bert

答えて

0

これはメモリの問題で、問題を増やしたい場合や、画像magickの使用を検討したい場合があります。 GDはRAMを使用してデータを保存し、5 MBのファイルから新しいリソースを作成すると大きなメモリ容量が必要になります

+0

こんにちはTrac、ありがとうございました。私はファイルサイズの3倍の画像をアップロードすることができますが、それは間違いなくメモリの問題でしょうか? – Origination

+0

これはファイルサイズではなく、ファイルサイズで、20メガピクセルのカメラから取得したJPEGは1MB未満ですが、取り扱う際にメモリを破壊する可能性があります。Image Magickを使用してみてください。imagecreatefromjpeg –

+0

Trac、私はちょうどメモリをアップして、問題のあるファイルはOKになるようです!ありがとうございました!心から感謝する! – Origination

関連する問題