2013-12-11 10 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.png 다음 https://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);