2014-06-08 4 views
0

그래서 이름 배열을 만들고 해당 이름과 연결된 이미지를 가져 와서 모두 병합하려고합니다. 아래의 코드는 깨진 ​​이미지를 반환하는 것 같습니다.여러 이미지를 병합하면 깨진 이미지가 생성됩니다.

<?php 
header('Content-Type: image/png'); 
$startLink = file_get_contents("http://websiteforimage.com/1/img.png"); 
$start = imagecreatefromstring($startLink); 
$name = array("2", "3", "4", "5", "6"); 
foreach($name as $value){ 
    $link = "http://websiteforimage.com/" . $value . "/img.png"; 
    $img = imagecreatefrompng($link); 
    $offset = imagesx($start) + imagesx($img); 
    imagecopymerge($start, $img, $offset, 0, 64, 64, 64, 64, 100); 
} 
imagepng($start); 

?> 

이 문제를 해결하는 방법에 대한 단서가 있습니까?

답변

0

초기 생각은 imagecopymerge() 함수입니다. 당신은 당신이 그들을 어떻게 합병하고 있는지 명확히 말하지는 않지만 그것이 왼쪽에서 오른쪽이라고 가정 할 것입니까? 이 경우

, 당신의 좌표는

$start - sure, that's the first image 
$img - yes, that's the new image to attach 
$offset - makes sense, that's where the new image is going to start on destination 
0  - makes sense too, as we are starting at the very top 
64  - makes no sense to me as you are saying the you want to start 64 pixels in on the new image 
64  - makes no sense again as you want to start 64 pixels down on your source image 
64  - I assume the source is 64 pixels wide 
64  - ...and 64 pixels high? 

그래서 당신이 정말로 그렇게하셨습니까 가정, 그것은 모두가 잘 나타납니다 잘못된 것 같다. 내 유일한 다른 질문은 함수 자체에 관한 것입니다. 나는 imagecopymerge가 당신이 당신의 근원을 놓고 싶었던 장소가 목적지에 존재할 때에 만 항상 작용할 것이라고 생각했다. 예를 들어, 목적지가 100 픽셀 너비이고 높이가 100 픽셀 인 경우 왼쪽에서 99 픽셀, 위쪽에서 99 픽셀의 이미지를 넣으려는 경우 1 픽셀로만 재생할 수 있으며 마술처럼 차원을 증가시키지 않습니다. 목적지.

그래서 이것을 고려해 볼 때 첫 번째 이미지가 다른 이미지에 미리 투영 될만큼 충분히 커야 할 필요가 있다고 확신합니다. 그렇지 않으면 X, Y 좌표가 목적지의 크기. 그래도 그 말을 인용하지 마십시오. 생각을위한 음식 일뿐입니다!

행운을 빈다.

아, 후속 조치 - 가이드로 확인 하시겠습니까? 그것은 똑같은 일을하는 것처럼 보입니다. http://diceattack.wordpress.com/2011/01/03/combining-multiple-images-using-php-and-gd/

+0

고마워요! 나는 새로운 이미지를 원본 이미지의 크기보다 크게두면 imagecopymerge가 이미지 크기를 조정한다고 가정 한 것 같습니다. 그래도, 그 웹 사이트는 내가 원하는 것을 정확하게하는 것처럼 보인다 - 고마워! –

+0

문제 없습니다. +1 + 풍자 주셔서 감사합니다 :) 행운을 빌어 요 – Adam

관련 문제