スクリプトのサーバー側の部分で画像をどのように切り取るかはわかりませんが、「画像全体を使用」というボタンを追加することで、投稿データ (x、y、幅、高さ)画像のフルサイズになります。次に、比率が予想よりも高い場合は、いつもと同じサイズで画像を作成し、幅で画像のサイズを変更して、新しい画像の中央に配置します. したがって、次のコードは、私が話していることを示すための「疑似コード」にすぎません。ユーザーが 1000px * 200px の画像をアップロードしたいとしましょう。必要な比率は 200px * 150px です。ユーザーは「フル画像サイズ」を選択するので、0,0,1000,200 (位置: 0,0、幅/高さ: 1000, 200) のようなデータを送信します。サーバー側では、必要なすべての計算を行うことができます。
$width = $_POST['width'];
$height= $_POST['height'];
$fullsize = isset($_POST['fullsize']) && $_POST['fullsize']; // If the full size mode is on.
if ($fullsize) {
$image = new Image(0,0,200,150); // Create the image canvas with whatever plugin your using.
if (($width/$height) > (200/150)) { // If WIDTH ratio is higher...
$x = 0; // We already know the image will be align on the left because of the previous calculations (ratio)
$y = (150/2) - ($height/2); // 50% top - half the image size = center.
}
if (($height/$width) > (150/200)) { // If HEIGHT ratio is higher...
// Repeat previous code with adjusted values for height instead of width.
}
// The next part is pure fiction, i dont know what php extension you use, but lets pretend this is working.
$newImage = new Image($x,$y,$width,$height,$file); // $file is probably the $_FILEs...
$image->placeInsideCanvas($newImage); // Imagine this adds the image into your previously created canvas (200/150);
$image->output();
}
これが役に立てば幸いです。