2013-12-11 3 views
0

Я удалил свой оригинальный вопрос, как мне удалось частично получить эту работу, то, что у меня есть 7 изображений,Как объединить несколько изображений вместе с помощью библиотеки GD?

https://dl.dropboxusercontent.com/u/58586640/layer1.png https://dl.dropboxusercontent.com/u/58586640/layer2.png https://dl.dropboxusercontent.com/u/58586640/layer3.png https://dl.dropboxusercontent.com/u/58586640/layer4.png https://dl.dropboxusercontent.com/u/58586640/layer5.png https://dl.dropboxusercontent.com/u/58586640/layer6.png https://dl.dropboxusercontent.com/u/58586640/layer7.png

Каждый из этих образов при размещении поверх друг друга должны создать одно изображение, которое идеально сочетается.

Текущий результат я имею,

https://dl.dropboxusercontent.com/u/58586640/Screen%20Shot%202013-12-11%20at%2018.31.57.png

Как вы можете видеть, что это работает почти идеально, но 2 из слоев либо не копируются или не получают альфы сохранены правильно. Я не уверен, что я делаю не так, как все остальные слои, кажется, работает нормально, то изображения, которые идут в качестве черноты,

https://dl.dropboxusercontent.com/u/58586640/layer3.pnghttps://dl.dropboxusercontent.com/u/58586640/layer4.png

Вот мой текущий код,

<?php 

$images = array('img/layer1.png', 'img/layer2.png', 'img/layer3.png', 'img/layer4.png', 'img/layer5.png', 'img/layer6.png', 'img/layer7.png'); 

// foreach($images as $i) { 
// var_dump(file_exists($i)); 
// } 

// Allocate new image 

$img = imagecreatetruecolor(704, 469); 

// Make alpha channels work 

imagealphablending($img, true); 
imagesavealpha($img, true); 

foreach($images as $fn) { 

    // Load image 
    $cur = imagecreatefrompng($fn); 
    imagealphablending($cur, true); 
    imagesavealpha($cur, true); 

    // Copy over image 
    imagecopy($img, $cur, 0,0,0,0, 704, 469); 

    // Free memory 
    imagedestroy($cur); 

} 

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

Как вы можете видеть, я проверил, чтобы убедиться, что файлы существуют, и они делают это, это должна быть проблема GD, у кого есть идеи?

ответ

0

Забавно, что я сделал именно это вчера, вот как я это сделал, используя статический фоновый слой и QR-код, который генерируется до объединения.

$template = imagecreatefrompng("./images/asset_barcode_template.png"); 
//QR created fine assemble final image 
$qrimage = imagecreatefrompng($this->qrfilename); 
//final image assembled just fine 
imagecopy($template, $qrimage, 230, 6, 0, 0, 106, 106); 
imagepng($template,$filename,0,PNG_NO_FILTER); 
Смежные вопросы