2010-10-06 125 views
56

我在試圖用PHP合併兩個圖像。用PHP合併兩個圖像

例如...我將如何將圖像放置在圖像兩上或與基本的PHP合併? 我已經嘗試了諸如水印這樣的東西,但它似乎沒有工作。

圖像的一個

alt text

圖像中的兩個

alt text

...並把它變成這樣? 最終結果:

alt text

+0

只顯示或玉試圖生成圖像 – zod 2010-10-06 20:01:57

+0

如果水印工作,但不給結果作爲你想,我的歪腦子裏想着3個圖像的組合。第一張圖片是空白的白色圖片,您將右側的第一張圖片和右側的第二張圖片合併。我知道寫代碼並不像發表評論那麼簡單。剛剛評論什麼凸輪在我心中 – zod 2010-10-06 20:16:29

+1

你確定你需要PHP嗎?你可以輕鬆的CSS它 – devcline 2015-05-14 12:48:46

回答

2

使用GD庫或ImageMagick的。我搜索了'PHP GD合併圖像'並獲得了一些關於這樣做的文章。在過去,我所做的是創建一個大的空白圖像,然後使用imagecopymerge()將這些圖像粘貼到原始的空白圖像中。看看google上的文章,你會發現一些你可以馬上開始使用的源代碼。

0

您可以使用ImageMagick擴展名來完成此操作。我猜測combineImages()方法會做你想做的。

1

PHP中的GD Image Manipulation Library可能是使用PHP處理圖像的最佳選擇。嘗試其中一種圖像複製功能(imagecopy,imagecopymerge,...)。它們中的每一個以不同的方式組合2個圖像。有關更多信息,請參閱php documentation on imagecopy

98

我從一個我做到了。

<?php 
$dest = imagecreatefrompng('vinyl.png'); 
$src = imagecreatefromjpeg('cover2.jpg'); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //have to play with these numbers for it to work for you, etc. 

header('Content-Type: image/png'); 
imagepng($dest); 

imagedestroy($dest); 
imagedestroy($src); 
?> 
+2

適用於具有透明度的圖像。 – Homework 2010-10-06 21:40:54

21

問題是關於合併兩個圖像,但是在這個指定的情況下,你不應該那樣做。你應該把內容圖像(即覆蓋)轉換成<img />標記,並將樣式圖像轉換成CSS,爲什麼?

  1. 正如我所說的蓋屬於該文件的內容,而黑膠唱片和陰影只是一個頁面樣式的一部分。
  2. 這種分離方式使用起來要方便得多。用戶可以輕鬆複製該圖像。網頁蜘蛛的索引更容易。
  3. 最後,它更容易維護。

所以使用非常簡單的代碼:

<div class="cover"> 
    <img src="/content/images/covers/movin-mountains.png" alt="Moving mountains by Pneuma" width="100" height="100" /> 
</div> 

.cover { 
    padding: 10px; 
    padding-right: 100px; 

    background: url(/style/images/cover-background.png) no-repeat; 
} 
+2

感謝這一點,但我要求PHP。仍然會保存這個。 – Homework 2010-10-07 00:57:44

+1

是的。它更容易服務器,因爲它不必處理所有圖像。而且它對用戶來說也更快,因爲它始終沒有乙烯基的圖像部分。 – 2014-03-08 17:45:46

+2

所選答案很有趣,因爲我們可以混合兩個圖像並在Facebook上分享。 – 2016-05-31 01:49:18

2

ImageArtist是我創作的純GD包裝,這使您能夠執行復雜的圖像操作非常輕鬆,你的問題的解決方案可以使用非常完成使用這個強大的圖書館幾步。

這裏是一個示例代碼。

$img1 = new Image("./cover.jpg"); 
$img2 = new Image("./box.png"); 
$img2->merge($img1,9,9); 
$img2->save("./merged.png",IMAGETYPE_PNG); 

這就是我的結果。

enter image description here

+0

太棒了!謝謝。 – Homework 2017-11-13 03:05:11