2013-05-15 296 views
0

我有一個網站,其中一個功能可讓用戶上傳圖像,然後旋轉/裁剪它們。我使用以下工具:旋轉裁剪圖像後獲取新的裁剪座標

所以我們可以說用戶想先裁剪圖像,然後將其旋轉。裁切會從圖像的左上角給出一組座標,形成格式爲x1,y1,x2,y2的矩形。我存儲在一個數據庫字段的字符串,然後將其添加到我的呼籲ImageResizer像這樣:

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

然而,如果用戶想要在已經冒出不再旋轉圖像,這些座標應用。我想要做的是將我的座標字符串分割成一個整數數組,其中包含x1,y1,x2,y2。

我的問題是:是否有一個數學公式,我可以適用於這些值基於90或-90度旋轉,這將給我旋轉後的正確座標值?

我只允許以90度遞增旋轉,並且一次只能旋轉一個 - 如果您想翻轉它,則從0到90,然後再從90到180旋轉。

回答

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 

注意上面的widthheight新的的寬度和高度。您可以分別替換舊的heightwidth

爲了解決這個問題,我所做的只是在一張紙上畫一張照片。我標出了作物點數,旋轉了它,並計算出它們是如何變化的。

+0

大聲笑,雖然我得到了不同的結果,但我做了相同的紙張繪製。我會在早上用你的公式檢查一下,看看我想出了什麼。 – Scott

+0

這完全有可能是我誤解了你正在嘗試做的事情......但是如果你的方式行不通,那麼給它一個鏡頭就不會有什麼傷害=) – paddy

+0

這樣做的伎倆,謝謝。 – Scott