2016-10-06 21 views
0

別の画像の中心(縦横とも)に寸法700 * 350の画像を配置する必要があります。私は次のコードで試しています。しかし、私は伸ばしたようにイメージを取得しています。PHP GDを使用して画像を別の画像の中央に配置

@header("Content-Type: image/png"); 
$imageURL = "flower.jpg"; 

// create a transparent background image for placing the $imageURL image 
$imageResource = imagecreatetruecolor(700, 350); 
imagesavealpha($imageResource, true); 

$transparentColor = imagecolorallocatealpha($imageResource, 0, 0, 0, 127); 
imagefill($imageResource, 0, 0, $transparentColor); 
$backgroundImage = imagecreatefromjpeg($imageURL); 
list($width, $height) = getimagesize($imageURL); 
imagecopyresampled($imageResource, $backgroundImage, 350, 175, 0, 0, 700, 350, $width, $height); 
imagepng($imageResource, "newimage.jpg"); 

このコードを実行すると、イメージの中央に表示されず、flower.jpgファイルも削除されています。私はこれで間違っているのですか?

誰でもこの問題を解決できますか?前もって感謝します。

+0

「センタリング」とはどういう意味ですか?画像の周りに余白がありますか?左右の余白がなく、上下の余白のみがある場合現在の例では、画像を中央からコーナーにコピーし始めます。 –

+0

期待される出力の例が良いでしょう。 – BVengerov

+0

@ Proger_Cbsk..画像の周りにマージンを持たなければなりません。結果として得られる画像は、透明画像の内側に水平方向と垂直方向の両方にセンタリングする必要があります。 – Jenz

答えて

1

このようなものが必要ですか?

@header("Content-Type: image/png"); 
$imageURL = "flower.jpg"; 

// create a transparent background image for placing the $imageURL image 
$imageResource = imagecreatetruecolor(700, 350); 
imagesavealpha($imageResource, true); 

$transparentColor = imagecolorallocatealpha($imageResource, 0, 0, 0, 127); 
imagefill($imageResource, 0, 0, $transparentColor); 
$backgroundImage = imagecreatefromjpeg($imageURL); 
list($width, $height) = getimagesize($imageURL); 

imagecopyresampled($imageResource, $backgroundImage, 175, 85, 0, 0, 350, 175, $width, $height); 
imagepng($imageResource, "newimage.jpg"); 
imagedestroy($imageResource); 
imagedestroy($backgroundImage); 

enter image description here

あなたが先座標と元画像のサイズが変更されるであろうに代えて中央の長方形の必要dimentionsの全体宛先画像サイズとして先画像の中心を指定していました。

また、imagedestroyもしていませんでした。

関連する問題