0

機能の 1 つを使用して、ユーザーが画像をアップロードし、回転/トリミングできるサイトがあります。次のツールを使用しています。

たとえば、ユーザーが最初に画像をトリミングしてから回転させたいとします。トリミングにより、画像の左上から一連の座標が得られ、形式 の長方形が形成されますx1,y1,x2,y2。それを文字列としてデータベース フィールドに保存し、次のように ImageResizer への呼び出しに追加します。

http://www.url.com/assets/image.jpg?crop=x1,y1,x2,y2

ただし、ユーザーがトリミング後に画像を回転させたい場合、それらの座標は適用されなくなります。私がやりたいことは、座標文字列を x1、y1、x2、y2 を順番に含む整数配列に分割することです。

私の質問は、90 度または -90 度の回転に基づいてこれらの値に適用できる数式があり、回転後に正しい座標値が得られるかどうかです。

90 度単位の回転のみを許可し、一度に 1 つだけです。つまり、0 から 90 まで、次に反転したい場合は 90 から 180 までです。

4

1 に答える 1

1

時計回りに回転すると、トリミング座標は次のように変化します。

x1   <-  width - old_y2 - 1
x2   <-  width - old_y1 - 1
y1   <-  old_x1
y2   <-  old_x2

反時計回りに回転すると、トリミング座標は次のように変化します。

x1   <-  old_y1
x2   <-  old_y2
y1   <-  height - old_x2 - 1
y2   <-  height - old_x1 - 1

widthand heightabove は新しい幅と高さであることに注意してください。古い heightとをそれぞれ置き換えることができwidthます。

これを解決するために私がしたことは、紙切れに絵を描くことだけでした。トリミング ポイントにラベルを付け、回転させ、それらがどのように変化したかを調べました。

于 2013-05-15T23:53:26.443 に答える