2012-01-10 2 views
2

두 개의 gif 이미지가 있습니다. 하나는 회색 그라데이션 배경이고 다른 하나는 로고가있는 이미지입니다. 예를 들어, 아래 이미지에서 녹색 상자는 로고입니다.PHP GD 라이브러리는 병합 된 이미지를 녹색에서 주황색으로 변경합니다.

내 문제는 내가 PHP GD 라이브러리를 사용하여 두 개의 gif 파일을 병합 할 때 녹색 부분이 어떻게 주황색/갈색이되어 원래 색상을 반환하지 않는다는 것입니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

$base_image = 'img_in.gif'; 
    $logo_image = 'logo.gif'; 

    // Create images from files 
    $source = imagecreatefromgif($base_image); 
    $logo = imagecreatefromgif($logo_image); 

    //---------------------Logo-----------------------------------\\ 
    imagecolortransparent($logo, imagecolorallocate($logo, 0, 0, 0)); 
    imagecopymerge($source, $logo, 152, 33, 0, 0, 153, 26, 100); 

    // -------------------------------Output--------------------------\\ 
    imagegif($source,$image_out); 
    imagedestroy($source); 

녹색 하나는 This is how it should look

This is how it ends up looking

가 종료 어떻게 위는 을 보는 방법이다 찾고 끝나는 방법은 오렌지 하나입니다 을 보는 방법입니다 up looking

+0

문제는 gif 형식의 제한된 색상 표에있는 것으로 의심되지만 해결책을 줄 수는 없습니다. 그래도 괜찮 으면 출력을 png로 전환하면 문제가 해결 될 것입니다. – Maerlyn

답변

2

GIF는 팔레트베이스이므로 각 GIF can use 256 colors nly - 팔레트에 할당 된 것. 하나의 GIF를 다른 GIF로 복사하면 라이브러리가 어떻게 든 팔레트를 균질화해야합니다.

이 GIF를 PNG (또는 더 많은 색상이 포함 된 일부 형식)으로 변환하도록 제안하고 처리 한 다음 마지막으로 GIF로 다시 변환하십시오.

일반적으로 결과가 더 좋을 것입니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 그것을 PNG로 사용했지만, 완성 된 이미지에 많은 노이즈가있어 품질이 매우 좋지 않았습니다. :( – user1038814

0

답장을 보내 주셔서 감사합니다. 나는 GIF를 256 색이 아니라 63 색으로 저장하고 있다는 것을 깨달았습니다. 도! 고마워요