2013-01-13 29 views
0

我试图让平铺图像用不同的图像。在第一个图块之后,第一个图块的平均颜色应用于另一个图块作为过滤器我怎样才能使用每个瓷砖图片 没有过滤器? 我的代码如下;图像拼贴代码适用于彩色滤光片

<?php 

$dest = imagecreatefrompng('myimage.png'); 

$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 

// Copy and merge 
for($i=0;$i<count($src);$i++){ 
imagecopymerge($dest, $src[$i], 32*$i, 0, 0, 0, 32, 32, 100); 

} 
// Output and free from memory 
header('Content-Type: image/png'); 
imagepng($dest); 
imagedestroy($dest); 

for($ii=0;$ii<count($src);$ii++){ 
imagedestroy($src[$ii]); 
} 

?> 

样品瓷砖的链接>http://7kitap.com/fox.png

代码链接>http://7kitap.com/fillimage.php

如您对以上的切片图像颜色链接看到的都是第一块后更改。

+0

那么什么是你的问题? –

+0

我想用我的瓷砖图片没有任何颜色变化。 – Kad

+1

您是否尝试过在没有源图像的情况下创建? 'imagecreatetruecolor' – teynon

回答

1

尝试使用imagecreatetruecolor。也许第一幅图像的颜色被用作其余部分的基础。

1

你的脚本可以有一些改进,现在你的瓷砖渲染将无法正常工作,如果你有更多的$src图片比填充width

我调整你的代码来处理尽可能多的瓷砖地:

<?php 

$width = 320; // pick size 
$height = 320; // pick size 

$dest = imagecreatetruecolor($width, $height); 

// I just added the same 3 pictures just to test the overflow 
$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 
$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 
$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 
$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 
$src[] = imagecreatefrompng('otter.png'); 
$src[] = imagecreatefrompng('fox.png'); 
$src[] = imagecreatefrompng('opals.png'); 

$thumbnailWidth = 32; // Should be deduced from the thumbnails 

$imagesPerRow = $width/$thumbnailWidth; 
// Copy and merge 
for($i=0;$i<count($src);$i++) 
{ 
    // Using this code, your thumbnails will overflow to the next row 
    $row = floor($i/$imagesPerRow); 
    $column = $i % $imagesPerRow; 
    imagecopymerge($dest, $src[$i], 32*$column, 32*$row, 0, 0, 32, 32, 100); 
} 
// Output and free from memory 
header('Content-Type: image/png'); 
imagepng($dest); 
imagedestroy($dest); 

for($ii=0;$ii<count($src);$ii++){ 
    imagedestroy($src[$ii]); 
} 

?> 

它会给你以下结果:

Tiles

+0

谢谢您的改进,这将节省我的更多时间。但我承诺以上。 – Kad

+0

这不完全是StackOverflow的工作原理......但如果您更好地考虑其他答案,请随时将其保留为接受的答案。 – emartel

+0

汤姆表示问题点的代码。但再次感谢您的改进。 – Kad