edo1z blog

プログラミングなどに関するブログです

php gd 画像リサイズ

画像リサイズのコードが変だったので直した。

list($ow, $oh, $type) = getimagesize($file_path);
if(empty($ow) || empty($oh)) return false;

$x = 0;
$y = 0;

if($ow / $nw > $oh / $nh){ //幅のがはみだしてる
    $w = $oh * $nw / $nh;
    $x = ($ow - $w) / 2;
    $ow = $w;
}else{ //高さのがはみだしてる
    $h = $ow * $nh / $nw;
    $y = ($oh - $h) / 2;
    $oh = $h;
}

nwとnhは、リサイズしたい幅と高さです。$file_pathは現在の画像のパスです。$owと$ohに現在の画像の幅と高さをとります。はみ出し方が控えめな方を基準に、リサイズしたい比率に大きくはみ出してる方を合わせます。大きくはみ出してる方は中央の画像を切り取るようにします。これだと小さい画像はリサイズ画像のサイズに合わせて拡大されます。