2009-08-04 74 views
2

如何加入頭部圖像和身體圖像,使頭部圖像精確地固定在身體圖像的脖子上。在php中加入兩張圖片

文件在:

我在http://yajurinfotech.com/projects/stickers/preview.php做出了嘗試。

我目前拿到的是:

$h = 'head1.gif'; 
$b = 'body2.gif'; 

$headResource = imagecreatefromgif($h); 
$bodyResource = imagecreatefromgif($b); 

list($headWidth, $headHeight) = getimagesize($h); 
list($bodyWidth, $bodyHeight) = getimagesize($b); 

$previewHeight = $headHeight+$bodyHeight; 
$previewWidth = $headWidth; 

$previewResource = imagecreatetruecolor($previewWidth, $previewHeight); 

//make background white 
$white = imagecolorallocate($previewResource, 255, 255, 255); 
imagefill($previewResource, 0, 0, $white); 

// Copy head image 

imagecopyresized($previewResource,$headResource, ($headHeight/4)+3,($headHeight/2)-3,0,0,$previewWidth/4,$previewHeight/4,$headWidth,$headHeight); 

//copy body image 
imagecopy($previewResource,$bodyResource,0,$headHeight,0,0,$bodyWidth,$bodyHeight); 

header('Content-type: image/gif'); 
imagegif($previewResource); 

正如你可以看到preview.php,頭圖像不正確放置在身體形象。

任何人都可以幫我找到一個適用於body2.gifbody1.gif的算法嗎?

+0

@Sreejith,歡迎來到stackoverflow!我想我們需要更多的信息來回答你的問題 - 脖子在什麼位置結束?頭是多大?你是否在意頭部「覆蓋」一些身體信息? – 2009-08-04 09:52:11

+0

首先獲得stackoverflow的榮譽。謝謝大家的支持。這真正激勵我.. @Dominic,我想實現類似於在此頁做了一個功能: http://www.familystickers.com/family-stickers/default.asp 只需滾動到頁面中的「創建你自己的家庭貼紙」,你會看到這裏實施的東西。我想要相同的功能.. – Sreejith 2009-08-05 11:45:42

回答

1

你可以用另一種方式來做到這一點,利用圖像疊加,所以你需要有一個canevas(基本圖片),你可以在它添加其他圖片..

例如:

$background = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']. base_path()."/files/polaroid.jpg"); 
$insert  = imagecreatefromjpeg($path. 'photos/'.$imgName); 
imagecolortransparent($insert, imagecolorat($insert, 0, 0)); 
$insert_x = imagesx($insert); 
$insert_y = imagesy($insert); 
imagecopymerge($background, $insert, 39, 32, 0, 0, $insert_x, $insert_y, 100); 

希望有幫助:)

+0

謝謝你Houssem。我會試一試.. – Sreejith 2009-08-05 11:33:52

1

正如你可以看到preview.php,頭部圖像沒有正確放置在身體圖像上。

任何人都可以幫我找到適用於body2.gif和body1.gif的算法嗎?

它只需要爲您提供的兩張照片工作,或者您是否在尋找適合脖子頭部的一般算法?

如果你想做前者,那隻需要找到正確的參數,你可以自己做。 (試錯)。

如果你正在追求後者,恐怕你不能這樣做,因爲它是一些非常先進的東西。這將需要模式識別(在身體圖像中找到頸部)以及其他一些AI物體來獲得正確的頭體比。

也許你可以告訴我們更多關於你想用這個做什麼?

0

這不是php的工作。

明顯的解決方案是設計圖像,以便所有的脖子在相同的位置,例如,在中心。

否則,您將需要一個數據庫或每個圖像的頸部位置列表。那麼你只需要改變頭部或身體圖像的相對位置。

移動圖像可以用css或使用可變大小的透明或背景彩色像素完成。 (也就是生成1x1像素的透明png圖片,然後用html來調整大小。)