簡體   English   中英

如何裁剪這個圖片?

[英]How to crop this image?

我有這個圖像,





我想將此圖像裁剪為多種尺寸,因為我使用此功能 -

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

請幫忙,謝謝

為什么不使用為你處理所有這些事情的lib?

例如,查看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");

PHP的POST方法上傳頁面說:

$ _FILES [ 'userfile的'] [ '類型']

文件的mime類型,如果瀏覽器提供了此信息。 一個例子是“image / gif”。 但是,在PHP端沒有檢查這個mime類型,因此不會將其值視為理所當然。

所以這里的圖像類型數據是由上傳文件的客戶端提供的,PHP建議不要信任它。 相信getimagesize()會給你什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM