2011-12-13 57 views
0

我熟悉的調整和使用imagecopyresampled下PHP裁剪圖像,但現在我有一個特殊的問題: 任務是從如裁剪一個大的圖像。 1600x1200到500x120,這意味着調整到500px,裁剪高度爲120px。有一些簡單的方法還是需要計算所有對我自己裁剪值?謝謝PHP:創建自定義大小的縮略圖

回答

0

你必須自己動手。

我不知道,如果要裁剪或沒有,所以這裏是如何計算兩個值:

縮放圖像:調整以適應新的寬x高保持縱橫比內(所以1個側可被短於指定)

function calc_scale_dims($width_orig, $height_orig, $max_width, $max_height) { 

    $new_width=$width_orig; 
    $new_height=$height_orig; 
    $ratioh = $max_height/$new_height; 
    $ratiow = $max_width/$new_width; 
    $ratio = min($ratioh, $ratiow); 
    // New dimensions 
    $dims["w"] = intval($ratio*$new_width); 
    $dims["h"] = intval($ratio*$new_height); 

    return $dims; 
} 

調整大小和作物:大小調整圖像和裁剪其配合到指定的寬x高,如果新的寬高比是不同的(例如,如果高寬比是不同的,圖象將被調整爲匹配指定尺碼較短,尺碼較長如果裁剪中間尺寸)

function calc_crop_resize_dims($width_orig, $height_orig, $new_width, $new_height) { 

    //Calculate scaling 
    $ratio_orig = $width_orig/$height_orig; 
    $ratio_new = $new_width/$new_height; 

    if ($ratio_new < $ratio_orig) { 
     $copy_width = $height_orig*$ratio_new; 
     $copy_height = $height_orig; 
    } else { 
     $copy_width = $width_orig; 
     $copy_height = $width_orig/$ratio_new; 
    } 

    //point to start copying from (to copy centre of image if we are cropping) 
    $dims["src_x"] = ($width_orig - $copy_width)/2; 
    $dims["src_y"] = ($height_orig - $copy_height)/2; 
    $dims["copy_width"] = $copy_width; 
    $dims["copy_height"] = $copy_height; 

    return $dims; 
}