이미지 크기 조정, 크기 조정 및 자르기를 위한 PHP 라이브러리입니다.
서버에서 이미지 자르기, 크기 조정 및 저장을 원하지 않는 경우 Gumlet.com은 실시간으로 이미지를 처리하고 CDN을 통해 전 세계적으로 서비스할 수 있는 무료 서비스입니다.
이 패키지는 이 저장소와 동일한 공급업체 및 패키지 식별자를 사용하여 Packagist를 통해 제공됩니다.
Composer를 사용하는 경우 composer.json
파일에 다음을 추가합니다.
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
아직 PHP 5.3을 사용하고 계시다면 버전 1.7.0
설치하시고, PHP 5.4를 사용하고 계시다면 이 라이브러리 버전 1.8.0
설치하시기 바랍니다.
WebP 지원은 PHP 5.6.0
에 추가되었으며 현재 버전의 라이브러리가 이를 지원합니다. 문제가 발생하는 경우 이 라이브러리의 1.9.2
버전을 사용하세요.
PHP 버전 >= 7.2의 경우 이 라이브러리의 2.0.1
이상 버전을 사용해야 합니다.
그렇지 않으면:
include ' /path/to/ImageResize.php ' ;
이 클래스는 네임스페이스를 사용하므로 객체를 인스턴스화할 때 정규화된 네임스페이스를 사용해야 합니다.
$ image = new Gumlet ImageResize ();
또는 별칭을 지정합니다.
use Gumlet ImageResize ;
$ image = new ImageResize ();
참고: 이 라이브러리는 애니메이션 gif 파일 크기 조정을 지원하지 않는 GD 클래스를 사용합니다.
이미지의 크기를 조정하려면(이 경우 크기를 절반으로)(크기 조정은 백분율 기준):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
한 차원에 따라 이미지 크기를 조정하려면(가로세로 비율 유지):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
방향에 관계없이 주어진 측정값에 따라 이미지 크기를 조정하려면(가로세로 비율 유지):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
주어진 치수 세트에 가장 잘 맞도록 이미지 크기를 조정하려면(애스펫 비율 유지):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
모든 크기 조정 기능에는 기본적으로 false로 설정되는 $allow_enlarge
옵션이 있습니다. 크기 조정 함수에 true
전달하여 활성화할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
가로 세로 비율을 직접 처리하고 싶다면 직접 크기를 조정할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
원본 이미지와 동일한 너비/높이 비율을 사용하지 않으면 이미지가 기울어지게 됩니다.
이미지를 자르려면:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
이렇게 하면 전달된 치수에 최대한 가깝게 이미지 크기가 조정되고 나머지는 자르고 중앙에 배치됩니다.
위의 예의 경우 400px × 600px의 이미지가 200px × 300px로 축소된 후 상단과 하단에서 50px가 제거되어 200px × 200px가 남게 됩니다.
자르기 모드:
이미지 크기를 조정한 후 최종적으로 초과되는 너비 또는 높이를 처리하는 방법을 선택하기 위해 사용할 수 있는 자르기 모드 옵션은 거의 없습니다. 사용되는 기본 자르기 모드는 CROPCENTER
입니다. 결과적으로 해당 코드 조각은 동일합니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
400px × 600px의 이미지가 있고 이를 200px × 200px로 자르려는 경우 이미지 크기는 200px × 300px로 조정됩니다. 그런 다음 자르기 값을 초과하는 100px를 처리할 방법을 지정할 수 있습니다. 사용하고 싶은 모드
예를 들어 자르기 모드 CROPTOP
전달하면 하단에서 100px가 제거되고 200px × 200px가 남게 됩니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
반대로 자르기 모드 CROPBOTTOM
전달하면 상단에서 100px가 제거되어 200px × 200px가 남게 됩니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
자유작물:
사용자 정의 자르기 위치를 정의하는 방법도 있습니다. freecrop
방법으로 $x 및 $y를 정의할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
문자열에서 이미지를 로드하려면:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
결과를 문자열로 반환할 수도 있습니다.
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
매직 __toString()
도 지원됩니다:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
위에서 볼 수 있듯이 $image->save('image.jpg');
이미지를 브라우저에 직접 렌더링하려면 $image->output()
호출할 수 있습니다.
디스크에 저장하거나 브라우저로 출력할 때 스크립트는 입력과 동일한 출력 유형을 가정합니다.
다른 이미지 유형으로 저장/출력하려면 (지원되는) PHP IMAGETYPE_
* 상수를 전달해야 합니다.
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
이를 통해 소스에 다른 유형으로 저장할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
$quality_jpg
, $quality_webp
및 $quality_png
속성을 구성할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
기본적으로 각각 85와 6으로 설정되어 있습니다. 자세한 내용은 imagejpeg()
및 imagepng()
에 대한 매뉴얼 항목을 참조하세요.
save()
, output()
및 getImageAsString()
메서드에 품질을 직접 전달할 수도 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
위 예에서는 이미지 유형에 대해 null
전달하여 이를 건너뛰고 품질을 제공합니다. 이 경우 이미지 유형은 입력과 동일한 것으로 가정됩니다.
기본적으로 이미지 인터레이스는 켜져 있습니다. $interlace
0
으로 설정하여 비활성화할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
작업 수행 시 원본 이미지가 유지되므로 과도한 파괴 없이 연쇄 작업이 가능합니다.
이는 여러 크기를 만드는 데 유용합니다.
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize는 오류로 인해 ImageResizeException을 발생시킵니다. 이를 포착하거나 확장 중인 일반 Exception을 포착할 수 있습니다.
예상할 수는 없지만 도중에 심각한 문제가 발생하면 PHP GD 및 이미지 함수(http://php.net/manual/en/ref.image.php)에서 오류를 확인하거나 경고할 수 있습니다.
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
새 이미지에 흐림 효과나 배너 추가와 같은 특수 효과를 적용할 수 있습니다.
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
주어진 모드를 사용하여 이미지를 뒤집습니다. 이 방법은 PHP 버전 5.4에만 해당됩니다.
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
두 기능 모두 추가된 순서대로 사용됩니다.
기본적으로 비활성화되어 있는 감마 색상 보정을 활성화할 수 있습니다.
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
이 라이브러리는 Gumlet.com에서 관리합니다.