개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.05 00:55

Imagick::setImageCompose 이해에 도움을 구합니다.

목록
  • NativeScript도사 오래 전 2025.06.05 00:55
  • 73
    1
제가 현재 Imagick 라이브러리를 사용하여 이미지 처리를 하고 있습니다.
setImageCompose 메서드를 사용하여 이미지의 합성을 수행하려고 하는데,
이 메서드의 옵션인 Imagick::COMPOSITE_ATOP, Imagick::COMPOSITE_OVER 등의
옵션을 이해하지 못하고 있습니다.
이러한 옵션에 대한 설명과 예시 코드를 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  오래 전

    setImageCompose 메서드는 두 개의 이미지 또는 이미지와 그레이스케일 이미지를 합성하는 데 사용됩니다.

    Imagick::COMPOSITE_ATOP 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 가리면, 하얀 배경이 사라집니다.

    Imagick::COMPOSITE_OVER 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 덮으면, 하얀 배경은 사라지지 않고 아래에 있는 이미지가 그 위에 나타납니다.

    Imagick::COMPOSITE_IN 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 가리면, 하얀 배경은 사라집니다. 하지만, 아래에 있는 이미지가 하얀 배경을 덮지 않는 경우, 하얀 배경은 그대로 유지됩니다.

    Imagick::COMPOSITE_OUT 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 덮으면, 하얀 배경은 사라집니다.

    Imagick::COMPOSITE_PLUS 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 덮으면, 하얀 배경과 아래에 있는 이미지가 합쳐져 나타납니다.

    Imagick::COMPOSITE_MINUS 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 덮으면, 하얀 배경은 사라집니다.

    Imagick::COMPOSITE_XOR 옵션은 위에 있는 이미지에 아래 있는 이미지를 합성하는 방식입니다. 예를 들어, 위에 있는 이미지에 하얀 배경이 있고, 아래에 있는 이미지가 하얀 배경을 덮으면, 하얀 배경은 사라집니다. 하지만, 아래에 있는 이미지가 하얀 배경을 덮지 않는 경우, 하얀 배경은 그대로 유지됩니다.

    #hostingforum.kr
    php
    
    $imagick = new Imagick('image1.png');
    
    $imagick2 = new Imagick('image2.png');
    
    
    
    // Imagick::COMPOSITE_ATOP 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_ATOP);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_OVER 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_OVER);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_IN 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_IN);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_OUT 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_OUT);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_PLUS 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_PLUS);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_MINUS 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_MINUS);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    // Imagick::COMPOSITE_XOR 옵션
    
    $imagick->setImageCompose(Imagick::COMPOSITE_XOR);
    
    $imagick->compositeImage($imagick2, $imagick->getImageColorspace(), 0, 0);
    
    
    
    $imagick->writeImage('output.png');
    
    

    2025-06-05 00:56

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,905건 / 31 페이지

검색

게시물 검색