0

WideImage ライブラリを使用して、アップロードした画像のサイズを変更しようとしています。

可能な限り最高の解像度に変換する必要があります。出力サイズは Width:460px Height:345px である必要があります

サイズ変更のソースは次のとおりです。

list($w, $h) = getimagesize($_FILES['image']['tmp_name']);
$wpercent = ($w/460)*100;
$hpercent = ($h/345)*100;
if ($wpercent >= 100 && $hpercent >= 100) {
    // Both is over 100% of the allowed size, then resize so the smaller side match.
    if ($wpercent > $hpercent) {
        // height is smallest
        $remove_percent = $hpercent - 100;
    }else{
        // width is smallest
        $remove_percent = $wpercent - 100;
    }
    $new_h_percent = $hpercent - $remove_percent;
    $new_w_percent = $wpercent - $remove_percent;
    $new_w = ($w/460)*$new_w_percent;
    $new_h = ($h/345)*$new_h_percent;
    $img = $img->resize($new_w, $new_h, 'inside');
    $img = $img->crop("center", "middle", 460, 345);
}else {
    // En af dem er for små
    if ($wpercent > $hpercent) {
        // height is smallest
        $add_percent = 100 - $hpercent;
    }else{
        // width is smallest
        $add_percent = 100 - $wpercent;
    }
    $new_h_percent = $hpercent + $add_percent;
    $new_w_percent = $wpercent + $add_percent;
    $new_w = ($w/460)*$new_w_percent;
    $new_h = ($h/345)*$new_h_percent;
    $img = $img->resize($new_w, $new_h, 'inside');
    $img = $img->crop("center", "middle", 460, 345);
}
$img->saveToFile('uploads/tmp/'.$new_name);

サイズが変更されますが、必要なサイズよりも小さいサイズになります。

何か案は?

また、必要に応じてトリミングする必要があります。

4

1 に答える 1

0
        list($w, $h) = getimagesize($_FILES['image']['tmp_name']);
        if ($w != 460 || $h != 345) {
             $img = $img->resize(460, 345, 'inside');
             $img = $img->crop("center", "middle", 460, 345);
        }
        $img->saveToFile('uploads/tmp/'.$new_name);

これらすべての new_h_percent と new_w_percent で何を達成しようとしていますか?

于 2013-02-02T22:00:24.230 に答える