이 클래스는 이미지의 텍스트를 사용한 보다 유연한 작업을 위해 Intervention Image 패키지의 대안입니다. 주어진 영역에 텍스트를 맞추고 , 글꼴 크기를 자동으로 계산하고 , 줄 높이를 변경해야 하는 경우 이 기능을 사용하세요. 텍스트 그리기 방법은 또한 예를 들어 블록을 서로 아래에 배치할 수 있는 비문의 실제 크기를 반환하는 방법을 알고 있습니다.
유연한 텍스트 작업 외에도 클래스는 Intervention 패키지와 유사한 이미지 API를 제공합니다. 스마트 포스터 크기 조정, 필터, 모양 그리기 및 기타 이미지 오버레이가 포함됩니다.
작업에 작곡가를 사용하지 않는 경우 클래스의 단순성과 종속성 부재에 관심이 있을 수도 있습니다. 이 클래스는 PHP-GD 드라이버만 지원합니다. 또한 클래스를 쉽게 상속할 수도 있습니다. 상위 클래스의 모든 메서드를 재정의할 수 있습니다.
poster editor 설치하는 가장 좋은 방법은 Composer를 사용하는 것입니다.
그러나 로더를 사용하지 않고 클래스를 직접 요구할 수 있습니다. 이는 성능에 어떤 영향도 미치지 않습니다.
php composer.phar require antonlukin/poster-editor
오류가 발생하면 클래스 메서드는 예외를 반환합니다.
따라서 블록 try..catch
내에서 호출하는 것이 가장 좋습니다.
// Using composer
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Or directly
// require_once __DIR__ . '/PosterEditor.php';
try {
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 600 , 600 );
$ image -> show ();
} catch ( Exception $ e ) {
echo $ e -> getMessage ();
}
$image->get()
원시 gd 명령을 사용하려면 이미지 리소스를 가져옵니다.
$image->set(instance $resourse)
원시 gd 명령을 사용한 후 이미지 리소스를 설정합니다.
$image->make(mixed $data)
파일 또는 바이너리 데이터에서 새 이미지 인스턴스를 만듭니다.
$image->insert(mixed $data, array $options = array())
선택적 위치를 사용하여 현재 이미지 위에 주어진 이미지 소스를 붙여넣습니다. 첫 번째 매개변수는 이진 데이터이거나 파일 경로 또는 다른 클래스 인스턴스일 수 있습니다. 옵션은 왼쪽 상단 모서리의 x/y 상대 오프셋 좌표와 0에서 100까지의 불투명도 배열입니다. 여기서 0은 투명도가 아닙니다. 기본적으로 이미지는 중앙에 배치됩니다.
$image->canvas(int $width, int $height, array $options = array())
너비와 높이로 캔버스를 초기화합니다. 배경색 옵션은 색상/불투명도 설정 배열입니다. 기본적으로 불투명도가 없는 검은색 캔버스입니다.
$image->show(string $format = null, int $quality = 90)
지정된 형식과 품질의 현재 이미지로 HTTP 응답을 보냅니다. 형식은 파일 이미지 확장자입니다. 기본적으로 응답 데이터는 현재 이미지 유형으로 인코딩됩니다. 이미지 유형이 아직 정의되지 않은 경우 메소드는 jpeg로 인코딩된 데이터를 반환합니다. 품질은 모든 파일 형식에 대해 0(낮은 품질, 작은 파일)부터 100(최고 품질, 큰 파일) 범위로 정규화됩니다. 기본값은 90입니다. PNG 형식은 무손실이며 품질은 이미지 크기와 압축 속도에만 영향을 미칩니다.
$image->save(string $path, int $quality = 90, string $format = null)
이미지 객체의 현재 상태를 파일 시스템에 저장합니다. 선택적으로 이미지를 저장해야 하는 특정 경로를 정의합니다. 이미지 유형은 파일 확장자로 정의됩니다. 사용 가능한 확장자가 없는 경우 응답 데이터는 현재 이미지 유형으로 인코딩됩니다. 이미지 유형이 아직 정의되지 않은 경우 메소드는 jpeg로 인코딩된 데이터를 반환합니다. 선택적으로 형식 매개변수를 사용하여 이를 재정의할 수 있습니다. 품질은 모든 파일 형식에 대해 0(낮은 품질, 작은 파일)부터 100(최고 품질, 큰 파일) 범위로 정규화됩니다. 기본값은 90입니다. PNG 형식은 무손실이며 품질은 이미지 크기와 압축 속도에만 영향을 미칩니다.
$image->destroy()
PHP 스크립트가 끝나기 전에 현재 이미지 인스턴스와 관련된 메모리를 해제합니다. 일반적으로 리소스는 스크립트가 완료된 후 자동으로 삭제됩니다.
$image->width()
현재 이미지의 높이를 픽셀 단위로 반환합니다.
$image->height()
현재 이미지의 높이를 픽셀 단위로 반환합니다.
$image->resize(int $width, int $height)
주어진 너비와 높이를 기준으로 현재 이미지의 크기를 조정합니다. 종횡비에 주의를 기울이지 않습니다. 비례적으로 크기를 조정하려면 upsize
및 downsize
방법을 사용하십시오.
$image->upsize(int $width = null, int $height = null)
가장 큰 쪽의 이미지를 확대합니다. 널링된 너비 또는 높이의 비율로 계산됩니다.
$image->downsize(int $width = null, int $height = null)
가장 큰 쪽의 이미지 크기를 줄입니다. 널링된 너비 또는 높이의 비율로 계산됩니다.
$image->crop(int $width, int $height, array $options = array())
주어진 너비와 높이로 현재 이미지의 직사각형 부분을 잘라냅니다. 컷아웃의 왼쪽 상단 모서리를 특정 위치로 이동하려면 선택적 x, y 좌표를 정의하세요.
$image->fit(int $width, int $height, string $position = 'center')
자르기와 크기 조정을 결합하여 이미지 형식을 스마트하게 지정하세요. 이 방법은 현재 이미지에서 가장 잘 맞는 종횡비를 자동으로 찾아서 잘라내어 주어진 치수에 맞게 크기를 조정합니다. 기본적으로 가능한 위치는 top-left
, top
, top-right
, bottom-left
, bottom
, bottom-right
, right
, left
및 center
.
$image->line(int $x1, int $y1, int $x2, int $y2, array $options = array())
현재 이미지의 x,y 지점 1에서 x,y 지점 2까지 선을 그립니다. 색상, 불투명도, 너비 값을 설정하려면 옵션 매개변수를 사용하세요.
$image->rectangle(int $x, int $y, int $width, int $height, array $options = array())
현재 이미지에 색상이 지정된 직사각형을 그립니다. 색상, 불투명도, 두께 및 윤곽선 값을 설정하려면 옵션 매개변수를 사용하세요.
$image->ellipse(int $x, int $y, int $width, int $height, array $options = array())
타원을 그립니다. 색상, 불투명도 및 윤곽선 값을 설정하려면 옵션 매개변수를 사용하세요.
$image->brightness(int $level = 0)
현재 이미지의 밝기를 주어진 레벨만큼 변경합니다. 최소 밝기는 -100, 변경 없음은 0, 최대 밝기는 +100 사이의 값을 사용하세요.
$image->contrast(int $level = 0)
현재 이미지의 대비를 주어진 레벨만큼 변경합니다. 최소 대비는 -100, 변화 없음은 0, 최대는 +100 사이의 값을 사용하세요.
$image->grayscale()
이미지를 회색조 버전으로 변환합니다.
$image->blur()
흐린 이미지 효과를 적용합니다.
$image->invert()
이미지의 색상을 반전시킵니다.
$image->blackout()
이미지에 검정색 불투명 직사각형을 그립니다.
$image->rotate(int $angle, array $options = array())
이미지를 회전합니다. 회전 후 덮이지 않은 영역의 각도(도)와 선택적 색상을 설정합니다.
$image->text(string $text, array $options = array(), array &$boundary = array())
이미지에 텍스트를 그립니다. 가능한 옵션:
그려진 텍스트 상자의 실제 크기를 얻으려면 경계를 사용하십시오. 아래의 자세한 예를 참조하세요.
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 , ' bottom ' )-> blackout ( 50 );
$ logo = new PosterEditor PosterEditor ();
$ logo -> make ( ' images/logo.png ' )-> downsize ( 150 , null );
$ image -> insert ( $ logo , array ( ' x ' => 50 , ' y ' => 50 ))-> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 );
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat Lorem ipsum dolor sit amet ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 1000 ,
' height ' => 400 ,
' horizontal ' => ' center ' ,
' vertical ' => ' center ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 24 ,
' lineheight ' => 1.75 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' jpg ' , 70 );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 900 , 600 );
$ image -> blackout ( 70 );
$ image -> text (
' Lorem ipsum dolor d d 4 g sit amet, consectetur adipiscing et, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eas commodo consequat sdfsdfl ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 600 ,
' height ' => 400 ,
' horizontal ' => ' justify ' ,
' vertical ' => ' justify ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' png ' );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> crop (
900 , 600 ,
array (
' x ' => ' 0 ' ,
' y ' => ' 100 '
)
);
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Large title with unknown height. Can be multi-line ' ,
array (
' x ' => 50 ,
' y ' => 100 ,
' width ' => 800 ,
' fontpath ' => ' /fonts/merriweather.ttf ' ,
' fontsize ' => 48 ,
' lineheight ' => 1.5 ,
' color ' => ' #9999ff ' ,
),
$ boundary
);
$ image -> text (
' This text appears right after title using smart boundaries ' ,
array (
' x ' => 50 ,
' y ' => $ boundary [ ' y ' ] + $ boundary [ ' height ' ],
' width ' => 800 ,
' fontpath ' => ' /fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ff9999 ' ,
),
$ boundary
);
$ image -> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1000 , 630 , ' bottom ' );
$ image -> contrast ( 5 )-> brightness (- 30 )-> blur ();
$ image -> rectangle (
20 , 20 , 960 , 590 ,
array (
' color ' => ' #ffffff ' ,
' outline ' => true ,
' width ' => 4 ,
)
);
$ image -> ellipse (
200 , 200 , 200 , 200 ,
array (
' color ' => ' #00ff00 ' ,
' opacity ' => 50 ,
)
);
$ image -> ellipse (
800 , 200 , 200 , 200 ,
array (
' color ' => ' #ff0000 ' ,
' opacity ' => 50 ,
)
);
$ image -> rectangle (
480 , 280 , 80 , 140 ,
array (
' color ' => ' #0000ff ' ,
)
);
$ image -> line (
200 , 500 , 800 , 500 ,
array (
' color ' => array ( 255 , 255 , 0 ),
' opacity ' => 10 ,
' width ' => 4 ,
)
);
$ image -> show ( ' png ' );
모든 프로젝트 코드는 Github에 저장됩니다. 프로젝트를 돕는 가장 좋은 방법은 버그를 보고하거나 새로운 기능을 추가하는 것입니다. 여기에서 문제를 열거나 풀 요청을 보낼 수도 있습니다.