1

クライアント側には、画像上の正方形の領域を選択するために使用する 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 が間違っているように見えます (そうではありません)。幅/高さは正しいのですが、セクションが間違っています。

上記のコードの何が問題になっていますか?

4

1 に答える 1