2013-05-03 41 views
1

1次重复我想利用具有透明度的图像,然后覆盖上一个重复用于第一图像的宽度和长度的60×60(任意尺寸)图像的顶部。 ..合并两个图像GD库,具有在背景

所以基本上使用图像2作为重复的背景图像该图像1是上的顶部。

编辑:

好了,所以就用一招小马的解决方案,但试图修改它以出的矩形的创建正方形图像,如果宽度小于高度,但不拉伸原图像,而不是集中。我能够将图像居中,但重叠图像停止后,重复背景不会继续重复。

下面是代码:

<?php 

    $overlay = imagecreatefrompng('../images/' . $_REQUEST['overlay']); 

    $repeating = '../images/' . $_REQUEST['repeating']; 
    $ext = explode('.', $_REQUEST['repeating']); 
    $ext = strtolower($ext[1]); 


    if ($ext == 'gif') 
     $repeating = imagecreatefromgif($repeating); 
    elseif ($ext == 'png') 
     $repeating = imagecreatefrompng($repeating); 
    elseif ($ext == 'jpg' || $ext == 'jpeg') 
     $repeating = imagecreatefromjpeg($repeating); 


    $w   = imagesx($overlay); 
    $h   = imagesy($overlay); 
    if ($w < $h) 
     $w = $h; 

    $output = imagecreatetruecolor($w, $h); 
    imagealphablending($output, true); 


    imagesettile($output, $repeating); 
    imagefill($output, 0, 0, IMG_COLOR_TILED); 
    imagedestroy($repeating);  

    $offsetx = ($w - imagesx($overlay))/2; 

    imagecopy($output, $overlay, $offsetx, 0, 0, 0, $w, $h); 
    imagedestroy($overlay); 


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



    ?> 

编辑2:

叠加:http://72.167.52.68/~viisi/ebaylist/images/back_test2.png

重复:http://72.167.52.68/~viisi/ebaylist/images/back_test.gif

预期结果(但继续在整个图像重复):http://72.167.52.68/~viisi/ebaylist/image/previewImage.php?overlay=back_test2.png&repeating=back_test.gif

+0

维塔利嗨,伟大的想法 - 活跃起来,编写一些代码,它张贴在这里,如果你需要帮助!我认为PHP的GD函数将是一个好的开始。 – michi 2013-05-03 01:22:08

+1

明天当我回到办公室时,我会开始这件事,一旦我有事情就会发布结果。 – 2013-05-03 01:23:55

回答

3
$overlay = imagecreatefrompng('/path/to/transparent/image.png'); 
$repeating = imagecreatefrompng('/path/to/repeating/image.png'); 

// create a new image matching overlay size 
$w = imagesx($overlay); 
$h = imagesy($overlay); 
$output = imagecreatetruecolor($w, $h); 
imagealphablending($output, true); 
imagesavealpha($output, true); 

// tile repeating image on it 
imagesettile($output, $repeating); 
imagefill($output, 0, 0, IMG_COLOR_TILED); 
imagedestroy($repeating);  

// now add overlay on top 
imagecopy($output, $overlay, 0, 0, 0, 0, $w, $h); 
imagedestroy($overlay); 

// send to screen 
header('Content-Type: image/png'); 
imagepng($output); 
imagedestroy($output); 
+0

我对我的问题做了一个编辑,你可以试一试吗? – 2013-05-05 06:30:19

+0

如果您发布两个图像,另一个在第二编辑预期输出 – 2013-05-05 09:58:09

+0

图像。 – 2013-05-05 12:22:18