2012-04-21 61 views
0

我使用imagerotate()函數將下面的圖像轉爲30度角。如何在PHP中正確旋轉圖像?

http://postimage.org/image/b7w6dacel/

的問題是,每當我旋轉圖像,並將其保存到一個新路徑,新路徑中的圖像旋轉,但它有一個黑色的周圍,像下面。

http://postimage.org/image/n3n1vtr9p/8501961e/

原始圖像是450 * 340和旋轉後,圖像變得560 * 520有誰知道我做錯了。看看我的源代碼如下。謝謝。

$filename = "static\\". $sessionid . "-1.jpg"; 
$file= $sessionid . "-1.jpg"; 
$ir = imagecreatefromjpeg($filename); 
$degrees = 30; 
$flip=imagerotate($ir, $degrees, 0); 
$rotated=imagejpeg($flip, 'c:\\xampp\\htdocs\\'. $file); 
+0

這看起來像我預期的行爲。你期望會發生什麼? – Halcyon 2012-04-21 18:08:20

+0

我想在不增加尺寸的情況下旋轉圖像。因爲旋轉圖像看起來像一個全新的圖像,周圍有黑色的圖像。 – user875139 2012-04-21 18:09:39

+0

那麼裁剪?請記住,除非您想允許顯示「背景」,否則結果會比原始尺寸小。 – Halcyon 2012-04-21 18:21:47

回答

1

根據你旋轉多少,新圖像會比原來的大。您將不得不縮放或裁剪新圖像。此代碼將按比例$oldImage縮放至$newWidth$newHeigth

$newImage = imagecreatetruecolor($newWidth, $newHeight); 
imagecopyresampled($newImage, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, imagesx($oldImage), imagesy($oldImage)); 

希望這會有所幫助。

+0

謝謝工作好極了! – user875139 2012-04-21 20:17:59

+0

很高興爲你效勞。 – Joel 2012-04-21 20:19:22