2013-01-13 6 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

Смежные вопросы