2012-01-10 14 views
0

私は、私はいくつかのサイズにこの画像をトリミングしたい





この画像をトリミングするには?

、このイメージを持っているため、私はこれが

function thumbanail_for_image($Id, $newfilename, $size=NULL) { 

    $file_extension = substr($newfilename, strrpos($newfilename, '.') + 1); 
    $arr = explode('.', $newfilename); 

    $thumb1 = LOCAL_FOLDER . $arr[0] . "_" . $Id . "." . $file_extension; 
    $thumb2 = LOCAL_FOLDER . $arr[0] . "_" . $Id . "b" . "." . $file_extension; 

    $old = LOCAL_FOLDER . $newfilename; 

    $newfilename = LOCAL_FOLDER . $newfilename; 

    $srcImage = ""; 

    $sizee = getimagesize($newfilename); 

    switch ($sizee['mime']) { 
    case "image/jpeg" : 
     $srcImage = imagecreatefromjpeg($old); 
     break; 
    case "image/png": 
     $srcImage = imagecreatefrompng($old); 
     break; 
    case "image/gif": 
     $srcImage = imagecreatefromgif($old); 
     break; 
    } 
    $srcwidth = $sizee[0]; 
    $srcheight = $sizee[1]; 

    if ($srcwidth > $srcheight || $srcwidth < $srcheight) { 
    $destwidth1 = 65; 
    $rat = $destwidth1/$srcwidth; 
    $destheight1 = (int) ($srcheight * $rat); 
    } 

    elseif ($srcwidth == $srcheight) { 
    $destwidth1 = 65; 
    $destheight1 = 65; 
    } 

    if ($srcwidth > $srcheight || $srcwidth < $srcheight) { 
    $destwidth2 = 300; 
    $rat = $destwidth2/$srcwidth; 
    $destheight2 = (int) ($srcheight * $rat); 
    } 
    elseif ($srcwidth == $srcheight) { 
    $destwidth2 = 300; 
    $destheight2 = 300; 
    } 

    $destImage1 = imagecreatetruecolor($destwidth1, $destheight1); 
    $destImage2 = imagecreatetruecolor($destwidth2, $destheight2); 

    imagecopyresampled($destImage1, $srcImage, 0, 0, 0, 0, $destwidth1, $destheight1, $srcwidth, $srcheight); 
    imagecopyresampled($destImage2, $srcImage, 0, 0, 0, 0, $destwidth2, $destheight2, $srcwidth, $srcheight); 

    if ($sizee['mime'] == "image/jpeg") { 
    imagejpeg($destImage1, $thumb1, 80); 
    imagejpeg($destImage2, $thumb2, 80); 
    } elseif ($sizee['mime'] == "image/png") { 
    imagepng($destImage1, $thumb1, 80); 
    imagepng($destImage2, $thumb2, 80); 
    } elseif ($sizee['mime'] == "image/gif") { 
    imagegif($destImage1, $thumb1, 80); 
    imagegif($destImage2, $thumb2, 80); 
    } 
    imagedestroy($destImage1); 
    imagedestroy($destImage2); 
    chmod($destImage1, 0777); 
    chmod($destImage2, 0777); 
    return $destImage1; 
} 

LOCAL_FOLDERを機能 - 使用ローカルへの可変パスです

私が見た問題は、私は$ _FILESを印刷するとき、それについての情報が

[type] =>image/jpeg 

を示し、私はgetimagesize()関数を印刷するとき、それは

[mime] => image/png 

を印刷している、 感謝

答えて

1

を助けてくださいなぜこれらすべてのことを扱うライブラリをあなたのために使わないのですか?

例えば、WideImageをチェックアウト:

include "path-to/WideImage.php"; 


$image = WideImage::load("path-to/image.jpg"); 
$cropped = $image->crop(0, 0, 100, 50); 
$cropped->saveToFile("cropped-image.jpg"); 
1

PHPのPOST method uploadsページは言う:

$ _FILES [ 'userfile'] [ '型']

MIMEタイプブラウザがこの情報を提供していれば、ファイルの 例は「image/gif」です。しかし、このMIMEタイプはPHP側で にチェックされておらず、したがって、その値を当然のように取っていません。

ここで、イメージタイプのデータは、ファイルをアップロードしたクライアントによって提供されるため、PHPはそれを信頼しないことを推奨します。代わりにgetimagesize()があなたに与えるものを信頼してください。

関連する問題