2011-03-11 143 views
1

我有4個小的JPEG圖像(40px x 30px),我想用GD創建一個瓷磚圖像。圖片來自瓷磚(GD)

兩個在頂部,兩個在底部。

像這樣:

[][] 
[][] 

那怎麼可以呢?

+0

['imagecopy()'](http://www.php.net/imagecopy)或['imagecopyresampled()'](http://php.net/imagecopyresampled)將執行此操作。 – 2011-03-11 22:53:38

+1

[用PHP合併兩個圖像]的可能的重複(http://stackoverflow.com/questions/3876299/merging-two-images-with-php) – Trufa 2011-03-11 22:58:27

+0

@Trufa類似,但這是將圖像拆分爲圖塊,而不是合併。 – Jacob 2011-03-11 23:07:46

回答

5

你需要使用的功能是

  • getimagesize - 獲取寬度和高度,使你知道做什麼尺寸的最終圖像,除非你想硬編碼。
  • imagecreate - 爲合併圖像創建資源。
  • imagecreatefromjpeg - 將現有圖塊加載爲資源。
  • imagecopy - 將現有的圖塊複製到新的圖像資源中,因爲尺寸/尺寸沒有改變,所以您不需要重新採樣函數。
  • imagejpeg - 保存合併的圖像。

這裏有一些未經測試的代碼,通過循環的瓷磚陣列來創建它。它使用常量來表示寬度和高度。

<?php 
define('TILE_WIDTH', 40); 
define('TILE_HEIGHT', 30); 

$tiles = array(
    array('tile1.jpeg', 'tile2.jpeg'), 
    array('tile3.jpeg', 'tile4.jpeg'), 
); 

$saveTo = 'result.jpeg'; 

$image = imagecreate(TILE_WIDTH * 2, TILE_HEIGHT * 2); 
foreach($tiles as $row => $columns) { 
    foreach($columns as $col => $filename) { 
     $tile = imagecreatefromjpeg($filename); 
     imagecopy($image, $tile, $row * TILE_WIDTH, $col * TILE_HEIGHT, 0, 0, TILE_WIDTH, TILE_HEIGHT); 
    } 
} 

imagejpeg($image, $saveTo); 

如果你想只顯示圖像,你不通過的第二個參數imagejpeg,但你需要設置頁眉內容類型爲image/jpeg格式。

+0

「將現有圖像的一部分複製到拼貼中」。那麼如何在現有標題中添加另一個圖像? – user622378 2011-03-11 23:52:28

+0

您需要使用imagecopy將使用imagecreatefromjpeg創建的平鋪圖像資源複製到使用imagecreate創建的較大圖像資源中。 – Jacob 2011-03-12 00:06:55