クライアント側には、画像上の正方形の領域を選択するために使用する jQuery スクリプトがあります。x1、y1、幅、高さのパラメーターを取得しました。それらはサーバーに正しく送信されます。この選択範囲に画像をトリミングしてから PNG に変換したい (imagejpg と imagepng の両方の関数を試しましたが)
コードは次のとおりです(私はlaravel 4を使用しています):
$file = Input::file('picture');
$filename = md5(microtime()).'.png';
$image = imagecreatefromstring(file_get_contents($file->getRealPath()));
$crop = imagecreatetruecolor(Input::get('width'), Input::get('height'));
imagecopy($crop, $image, 0, 0, (int)Input::get('x1'), (int)Input::get('y1'), Input::get('width'), Input::get('height'));
imagepng($crop, public_path().'/uploads/pictures/'.$filename);
高さ>元の画像の幅の場合、完全に機能します。幅の広い画像 (幅 > 高さ) をトリミングしようとすると、間違った領域が表示され、x1、y1 が間違っているように見えます (そうではありません)。幅/高さは正しいのですが、セクションが間違っています。
上記のコードの何が問題になっていますか?