2017-08-31 3 views
0

私は何時間も何時間も頭を悩まされています。単純なフォームでアップロードすると同じ比率で画像のサイズを変更する方法を理解できません。誰かが2048pxよりも大きな画像をアップロードした場合は、サイズを2048pxに変更してフォルダに保存します。複数の画像をアップロードして同じサイズでサイズを変更するPHP

私は残念ながらお見せするためには何も持っていないが、ほとんどの検索とGDについて読んでますが私のために動作しませんされてだけで私の形で基本的にバックスクラッチによので...

任意のヒントは非常にあります感謝!

EDIT:

if(isset($con, $_POST['save_button'])){ 
    // IMAGE PROCESSING 
    $name = $_FILES['file_upload']['name']; 
    $tmp_name = $_FILES['file_upload']['tmp_name']; 
    $type = $_FILES['file_upload']['type']; 
    $size = $_FILES['file_upload']['size']; 
    $error = $_FILES['file_upload']['error']; 

    move_uploaded_file($tmp_name, "social_images/$name.jpg"); 

    function resize_image($img, $w, $h, $crop=FALSE) { 
     list($width, $height) = getimagesize($img); 
     $r = $width/$height; 
     if ($crop) { 
      if ($width > $height) { 
       $width = ceil($width-($width*abs($r-$w/$h))); 
      } else { 
       $height = ceil($height-($height*abs($r-$w/$h))); 
      } 
      $newwidth = $w; 
      $newheight = $h; 
     } else { 
      if ($w/$h > $r) { 
       $newwidth = $h*$r; 
       $newheight = $h; 
      } else { 
       $newheight = $w/$r; 
       $newwidth = $w; 
      } 
     } 
     $src = imagecreatefromjpeg($img); 
     $dst = imagecreatetruecolor($newwidth, $newheight); 
     imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
     return $dst; 
    } 

    $img = resize_image("social_images/$name.jpg", 780, 780); 

    header("location: index.php"); 
    exit(); 
} 

答えて

2

たての再試行と再テスト:

<?php 
function shazam($file, $w, $h) { 
    list($width, $height) = getimagesize($file); 

    if ($width > $height) { 
     $r = ($w/$width); 
     $newwidth = $w; 
     $newheight = ceil($height * $r); 
    } 

    if ($width < $height) { 
     $r = ($h/$height); 
     $newheight = $h; 
     $newwidth = ceil($width * $r); 
    } 

    if ($width == $height) { 
     $newheight = $h; 
     $newwidth = $w; 
    } 

    $src = imagecreatefromjpeg($file); 
    $tgt = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresampled($tgt, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    return $tgt; 
} 

$img = shazam("thepicwithpath.jpg", 850, 850); 
imagejpeg($img, "theresizedpicwithpath.jpg", 75); 
?> 

注終わりimagejpeg()は実際に新しいファイルを作成するものであること。

+0

残りは次のとおりです。https://stackoverflow.com/questions/14649645/resize-image-in-php – deg

+0

すばやく返信いただきありがとうございます!私は今少し試してみましたが、まだそれを掛けているようではありません。あなたはコードを見てみますか?投稿を編集しました – Nilsson1188

+0

心配はいりません。実績のある例の回答を見直してください(私は風景でしかテストしていませんが、かなり自信があります)。 – deg

関連する問題