>백엔드 개발 >PHP 튜토리얼 >PHP 마스터 | Imagick과 함께 텍스트 워터 마크 추가

PHP 마스터 | Imagick과 함께 텍스트 워터 마크 추가

Christopher Nolan
Christopher Nolan원래의
2025-02-25 16:13:09124검색
Imagick PHP 확장 라이브러리에 대한 자세한 설명 : 이미지에 텍스트 워터 마크 추가 이 기사에서는 PHP의 Imagick Extension 라이브러리를 사용하여 이미지에 텍스트 워터 마크를 추가하는 방법을 소개합니다. 간단한 텍스트 오버레이, 글꼴 마스크를 사용하여 투명 텍스트 워터 마크 생성 및 고급 텍스트 타일링 기술을 포함한 다양한 방법을 살펴 봅니다.

키 포인트 :

Imagick은 텍스트 워터 마크 추가를 포함하여 이미지를 처리하는 데 사용할 수있는 강력한 PHP 확장 라이브러리입니다.

텍스트 워터 마킹은 Imagick 클래스 인스턴스를 만들고 이미지를 읽고, imagickdraw 인스턴스를 사용하여 글꼴 속성을 설정 한 다음 메소드를 사용하여 이미지에 텍스트를 추가하여 달성 할 수 있습니다.

이미지에 직접 텍스트 문자열을 오버레이하는 등 텍스트 워터 마크를 추가하는 방법에는 여러 가지가 있습니다. 글꼴 마스크가있는 투명 텍스트 워터 마크를 생성하고 전체 이미지의 텍스트 타일링을 통해 워터 마크 제거를 어렵게 만듭니다. imagickdraw 클래스는 투명도 추가 및 위치 및 텍스트를 회전시키는 등의 워터 마크 텍스트를 사용자 정의하는 여러 가지 방법을 제공합니다.

    이전 기사에서 Timothy Boronczyk는 이전 기사에서 Imagick 및 오버레이 이미지를 사용하여 워터 마크를 만드는 방법을 설명했습니다. 이 기사는 일반 텍스트를 사용하여 유사한 효과를 달성하는 방법을 보여줍니다. 현재 PHP의 Imagick API 문서는 매우 드물지만 Imagemagick 웹 사이트에는 많은 명령 줄 예제가 있습니다. 명령 줄 코드를 PHP 코드로 변환하는 것은 동일한 함수를 수행하기위한 해당 방법을 찾는 것입니다. 다음 예제는 임의의 잘 생긴 남자 사진을 사용합니다.
  • annotateImage() 이미지에 텍스트를 그립니다 가장 쉬운 텍스트 워터 마크는 이미지에서 문자열을 직접 오버레이하는 것입니다. 명령 줄 예제는 다음과 같습니다
  • 반응 형 PHP 코드 :

  • 복제 사진 :
  • 이 예제는 매우 간단하며 코드 주석은 매우 명확합니다. 효과적이지만 텍스트와 이미지의 대비는 너무 강하고 효과는 충분히 부드럽 지 않습니다. setFillColor() setFontSize() 글꼴 마스크를 사용하여 투명 텍스트를 만듭니다 워터 마크 텍스트를 더 부드럽게 만들려면 글꼴 마스크를 사용하여 투명 텍스트를 만들 수 있습니다. 명령 줄 예 : setFont() <: :> PHP 코드 : setFillOpacity() 복제 사진 : annotateImage()
  • 이 예제는 여러 이미지를 만듭니다. 첫 번째 이미지

    는 그레이 스케일 이미지이며, 두 번째 이미지 $watermark는 순수한 검은 색을 사용하여 부품을 투명하고 흰색으로 표시하여 보유 할 부분을 나타냅니다. 조합 이미지를 통해 마스크를 적용 할 때, $mask에서 발견되는 회색 그림자는 반 알리 아스 효과로 인해 반투명 해져서 더 부드러운 가장자리가 생깁니다. 명령 줄 버전 코드에서 투명 이미지의 외부 가장자리는 워터 마크를 오버레이하기 전에 자르지 만 $mask 메소드가 에 의해 정의 된 위치를 유지하는 것을 방지하는 버그가있는 것 같습니다. 즉, 가장자리가 자르면 워터 마크가 오른쪽 하단 위치를 잃고 왼쪽 상단 모서리로 재배치됩니다. 이 문제를 해결하기 위해 생성 된 컬러 팔레트는 소스 이미지와 크기가 동일하므로 자르기가 발생하지 않습니다. compositeImage() setGravity() 텍스트 타일링

    마지막 예제는 전체 이미지 전체에서 텍스트를 타일로하여 워터 마크를 제거하는 것이 더욱 어렵습니다. 명령 줄 : <: :> PHP 코드 : 복제 사진 :

    투명성은 이미지 마스크를 사용하는 대신 여기에서

    를 사용하여 설정됩니다.
    <code class="language-bash">convert image.png  -font Arial -pointsize 20 \
        -draw "gravity south \
            fill black  text 0,12 'Copyright' \
            fill white  text 1,11 'Copyright'" \
        result.png</code>
    요약

    나를 위해 PHP의 이미지 처리는 언어의 가장 즐거운 측면 중 하나가되었으며 Imagick이 향후 버전으로 함께 번들 로워지기를 바랍니다. 기여 방법을 찾고 있다면 다른 명령 줄 예제를 PHP로 변환 한 다음 다른 사람들이 배우고 즐길 수 있도록 공식 PHP 매뉴얼에 결과를 게시하는 것이 좋습니다.
    <code class="language-php"><?php 
    // 创建对象
    $image = new Imagick('image.png');
    
    // 水印文本
    $text = 'Copyright';
    
    // 创建新的绘图面板
    $draw = new ImagickDraw();
    
    // 设置字体属性
    $draw->setFont('Arial');
    $draw->setFontSize(20);
    $draw->setFillColor('black');
    
    // 将文本定位在图像的右下角
    $draw->setGravity(Imagick::GRAVITY_SOUTHEAST);
    
    // 在图像上绘制文本
    $image->annotateImage($draw, 10, 12, 0, $text);
    
    // 稍微偏移位置,使用不同的颜色再次绘制文本
    $draw->setFillColor('white');
    $image->annotateImage($draw, 11, 11, 0, $text);
    
    // 设置输出图像格式
    $image->setImageFormat('png');
    
    // 输出新图像
    header('Content-type: image/png');
    echo $image;
    ?></code>

    (Fotolia의 그림)

    (다음은 FAQ이며, 형식과 내용은 원래 텍스트에 따라 조정되었으며 의사 원리 창작물이 만들어졌습니다) PHP Master | Adding Text Watermarks with Imagick

    imagick (FAQ)을 사용하여 PHP에 텍스트 워터 마크 추가에 대해 자주 묻는 질문

    Q : PHP에서 Imagick을 사용하여 이미지에 텍스트 워터 마크를 추가하는 방법은 무엇입니까? setFillOpacity() a : PHP의 Imagick을 사용하여 텍스트 워터 마크를 이미지에 추가하려면 먼저 Imagick 클래스의 인스턴스를 만들고 이미지를 읽어야합니다. 그런 다음 ImagickDraw 인스턴스를 작성하고 글꼴 속성을 설정하십시오. 그런 다음 AnnotateImage () 메소드를 사용하여 이미지에 텍스트를 추가 할 수 있습니다. 마지막으로 writeImage () 메소드를 사용하여 이미지를 파일 시스템에 씁니다. 기본 예는 다음과 같습니다.

    Q : imagick에서 Watermark 텍스트의 글꼴 색상을 변경하는 방법은 무엇입니까? A : ImagickDraw 클래스의 setfillColor () 메소드를 사용하여 imagick에서 Watermark 텍스트의 글꼴 색상을 변경할 수 있습니다. 이 방법은 색상을 나타내는 문자열을 수용합니다. 예를 들어 글꼴 색상을 빨간색으로 설정하려면 다음을 수행 할 수 있습니다.

    Q : imagick에서 Watermark 텍스트의 글꼴 크기를 변경하는 방법은 무엇입니까?

    a : imagickdraw 클래스의 setfontsize () 메소드를 사용하여 imagick에서 워터 마크 텍스트의 글꼴 크기를 변경할 수 있습니다. 이 방법은 글꼴 크기를 나타내는 정수를 허용합니다. 예를 들어 글꼴 크기를 30으로 설정하려면 다음을 수행 할 수 있습니다.
    <code class="language-bash">convert image.png  -font Arial -pointsize 20 \
        -draw "gravity south \
            fill black  text 0,12 'Copyright' \
            fill white  text 1,11 'Copyright'" \
        result.png</code>

    Q : Imagick에서 Watermark 텍스트의 글꼴을 변경하는 방법은 무엇입니까? a : imagickdraw 클래스의 setfont () 메소드를 사용하여 imagick에서 워터 마크 텍스트의 글꼴을 변경할 수 있습니다. 이 메소드는 글꼴 이름을 나타내는 문자열을 허용합니다. 예를 들어 글꼴을 "Arial"으로 설정하려면 다음을 수행 할 수 있습니다. Q : Imagick에서 Watermark 텍스트를 찾는 방법은 무엇입니까?

    a : imagick 클래스의 annotateImage () 메소드를 사용하여 imagick에서 워터 마크 텍스트의 위치를 ​​설정할 수 있습니다. 이 메소드는 4 개의 매개 변수, 즉 imagickdraw 인스턴스, X 및 Y 좌표, 텍스트 회전 각도 및 텍스트 문자열을 허용합니다. 예를 들어, 좌표 (10, 45)에서 텍스트를 배치하려면 다음을 수행 할 수 있습니다.

    Q : Imagick에서 Watermark 텍스트를 회전시키는 방법은 무엇입니까?

    a : imagick 클래스의 AnnotateImage () 메소드를 사용하여 imagick에서 Watermark 텍스트의 회전 각도를 설정할 수 있습니다. 이 방법의 네 번째 매개 변수는 텍스트의 회전 각도입니다. 예를 들어, 텍스트를 45도 회전하려면 다음을 수행 할 수 있습니다.
    <code class="language-php"><?php 
    // 创建对象
    $image = new Imagick('image.png');
    
    // 水印文本
    $text = 'Copyright';
    
    // 创建新的绘图面板
    $draw = new ImagickDraw();
    
    // 设置字体属性
    $draw->setFont('Arial');
    $draw->setFontSize(20);
    $draw->setFillColor('black');
    
    // 将文本定位在图像的右下角
    $draw->setGravity(Imagick::GRAVITY_SOUTHEAST);
    
    // 在图像上绘制文本
    $image->annotateImage($draw, 10, 12, 0, $text);
    
    // 稍微偏移位置,使用不同的颜色再次绘制文本
    $draw->setFillColor('white');
    $image->annotateImage($draw, 11, 11, 0, $text);
    
    // 设置输出图像格式
    $image->setImageFormat('png');
    
    // 输出新图像
    header('Content-type: image/png');
    echo $image;
    ?></code>

    Q : imagick에 워터 마크 이미지를 저장하는 방법은 무엇입니까? a : imagick 클래스의 writeImage () 메소드를 사용하여 워터 마크 이미지를 저장할 수 있습니다. 이 메소드는 파일 경로를 나타내는 문자열을 허용합니다. 예를 들어 이미지를 "WaterMarked_Image.png"로 저장하려면 다음을 수행 할 수 있습니다. Q : 투명한 워터 마크 텍스트를 Imagick에 추가하는 방법은 무엇입니까?

    A : ImagickDraw 클래스의 setfillOpacity () 메소드를 사용하여 투명한 워터 마크 텍스트를 Imagick에 추가 할 수 있습니다. 이 방법은 불투명도 수준을 나타내는 부동 소수점 번호를 허용합니다. 예를 들어 불투명도를 0.5로 설정하려면 다음을 수행 할 수 있습니다.

    Q : imagick에서 워터 마크 텍스트에 그림자를 추가하는 방법?
    <code class="language-bash">convert -size 300x50 xc:grey30 -font Arial -pointsize 20 \
        -gravity center -draw "fill grey70  text 0,0  'Copyright'" \
        fgnd.png
    convert -size 300x50 xc:black -font Arial -pointsize 20 -gravity center \
        -draw "fill white  text  1,1  'Copyright' \
            text  0,0  'Copyright' \
            fill black  text -1,-1 'Copyright'" \
        +matte mask.png
    composite -compose CopyOpacity  mask.png  fgnd.png  stamp.png 
        mogrify -trim +repage stamp.png
    composite -gravity south -geometry +0+10 stamp.png  image.png \
        result.png</code>
    a : 텍스트를 두 번 그려서 텍스트 자체의 경우 한 번은 텍스트를 두 번, 텍스트를 두 번 그려서 imagick의 Watermark 텍스트에 그림자를 추가 할 수 있습니다. 채우기 색상을 검은 색으로 설정하고 텍스트 위치를 상쇄하여 그림자를 만들 수 있습니다. 예를 들면 :

    Q : imagick의 여러 이미지에 워터 마크 텍스트를 추가하는 방법은 무엇입니까?

    a : Imagick의 여러 이미지에 워터 마크 텍스트를 추가하려면 이미지를 루프하고 각 이미지에 워터 마크를 적용 할 수 있습니다. 기본 예는 다음과 같습니다.

위 내용은 PHP 마스터 | Imagick과 함께 텍스트 워터 마크 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.