키 포인트
GD와 Imagemagick은 모두 인기있는 PHP 이미지 처리 라이브러리가 더 널리 사용되며 Imagemagick은 더 강력합니다.
성능면에서, 둘 사이에는 절대적인 장점과 단점이 없으며 속도는 특정 응용 프로그램 시나리오에 따라 다릅니다.
인코딩 스타일은 GD가 절차 프로그래밍을 채택하며 ImageMagick은 imagick 클래스를 통해 객체 지향 프로그래밍을 지원합니다.
이 두 라이브러리 외에도 클라우드 이미지 처리 플랫폼 또는 응용 프로그램에 통합 된 구성 요소와 같은 다른 옵션이 있습니다. -
소개 -
PHP 응용 프로그램의 경우 썸네일을 만들거나 이미지 필터를 적용하거나 다른 이미지 변환을 수행 해야하는 경우 이미지 처리 라이브러리를 사용해야합니다. 일반적으로 GD 또는 Imagemagick을 선택합니다. 그러나 어떤 라이브러리가 더 많은 이미지 형식을 지원합니까? 어떤 라이브러리가 더 빠릅니까? 올바른 라이브러리를 선택할 때 어떤 다른 요소를 고려해야합니까? 이 기사는이 질문에 답할 것입니다! -
가용성
-
PHP 자체로 설치되고 구성되면 gd 및 imagemagick은 PHP로 제공됩니다. GD 라이브러리는 PHP 4.3부터 기본적으로 포함되므로 대부분의 서버 환경에서 사용할 수 있습니다. 반면에 Imagemagick은 항상 사용할 수있는 것은 아니며 일부 호스팅 회사는이를 제공하지 않습니다.
이 두 라이브러리의 가용성을 확인하기 위해 몇 줄의 코드를 실행할 수 있습니다. imagemagick 's 및 gd's
함수는 각 라이브러리에서 지원하는 이미지 형식을 나열 할 수 있습니다.
지원 파일 유형
위의 코드를 실행 한 후 인쇄 된 지원되는 이미지 형식 목록은 먼저 Imagemagick 라이브러리의 기능이 GD를 훨씬 뛰어 넘음을 보여줍니다. GD는 JPG, PNG, GIF, WBMP, WEBP, XBM 및 XPM 파일 만 지원하며 imageMagick 라이브러리에서 처리 한 100 개 이상의 파일 유형에 비해 숫자가 매우 제한적입니다.
imagemagick에서 지원하는이 모든 드문 형식을 사용하지 않을 수도 있지만 그렇지 않을 수도 있습니다. 내 프로젝트 중 하나에서 GD가 TIFF 파일을 지원하지 않기 때문에 GD에서 Imagemagick으로 전환해야했습니다.
함수
GD 및 Imagemagick은 이미지 크기 조정 및 자르기, 사용자 정의 모양, 텍스트 및 기타 이미지 파일로 구성된 이미지 만들기, 이미지 필터 적용 (밝기 변경, 대비, 음영 등)과 같은 몇 가지 기본 기능을 제공합니다.
이미지를보다 고급 처리하려면 Imagemagick 라이브러리의 모든 기능을 확인하십시오. Imagemagick 예제 페이지 (첫 번째 및 두 번째)에 표시된 것처럼 이미지를 수많은 방식으로 변환, 장식 또는 왜곡 할 수 있습니다.
PHP Imagemagick 클래스 자체는 331 가지 방법을 제공합니다.이 방법은 상당한 숫자입니다 (아니요, 수동으로 계산하지 않았으며 ;)). 한편으로, 그것은 Imagemagick 라이브러리의 힘을 보여 주며, 반면에 특정 사용 사례에 대한 적절한 방법을 찾고 구현하기가 어렵습니다.
성능 queryFormats()
솔직히 말해서, 썸네일 세트를 만들거나 이미지에 간단한 변환을 적용하려면 각 이미지 프로세싱 라이브러리의 성능을 비교하는 데 신경 쓰지 않아도됩니다. gd_info()
일반적인 서버 구성으로 수행 한 일련의 테스트에서 3MB 디지털 카메라 JPG 이미지에서 썸네일을 생성하면 GD를 사용하는 데 약 0.6 초가 걸립니다. 따라서 어떤 라이브러리를 사용하든 전체 프로세스에 시간이 많이 걸리지 않습니다. 웹을 탐색하고 두 라이브러리 모두에 대한 속도 테스트를 찾은 후에는 성능 측면에서 눈에 띄지 않는다는 것을 신속하게 알 수 있습니다. 때로는 GD 라이브러리가 더 빨리 실행되며 때로는 Imagemagick입니다. 사용 사례에 달려 있습니다. GD 또는 Imagemagick 사용 여부를 결정할 때이 표준을 핵심 요소로 간주하지 마십시오.
코딩 스타일
GD 및 Imagemagick 라이브러리를 사용하여 작성된 동일한 이미지 변환 코드를 비교하면 이들 사이에 몇 가지 차이가 빠르게 나타납니다. GD 라이브러리는 또는 와 같은 일련의 기능을 통해 제공되므로 전체 이미지 처리 스크립트는 절차 적 스타일로 작성해야합니다. JPG 이미지의 썸네일을 만드는 예를 살펴 보겠습니다 :
오류가 발생하면 예외가 발생하지 않기 때문에 각 GD 기능의 결과를 확인하여 모든 오류 처리를 달성해야합니다. 또한 또는
와 같은 10 개의 매개 변수로 거대한 기능을 처리해야합니다. 나는 많은 매개 변수가 좋은 코딩 관행의 예가 아니라고 생각합니다.
덜 편리 할 수있는 또 다른 것은 이미지를 읽고 저장하는 기능이 이미지 유형에 따라 다르다는 것입니다. 따라서 썸네일 생성 스크립트가 다른 파일 유형을 처리하려면 다음 코드를 추가해야합니다.
getimagesize()
그런 다음 이미지 유형에 따라 다른 기능을 실행하여 올바른 형식으로 대상 이미지를 저장해야합니다. 보시다시피, GD 코드는 빠르게 복잡해집니다. imagecreatetruecolor()
동일한 작업을 담당하는 Imagemagick 코드를 확인하면 차이점을 알 수 있습니다.
Imagemagick 라이브러리는 Imagick 클래스를 통해 액세스 할 수 있습니다. 따라서, 우리는 객체 지향 프로그래밍 패러다임의 모든 장점으로부터 이익을 얻을 수 있습니다. 가장 쉬운 예는 오류를 처리하는 방법입니다. ImageMagick 라이브러리를 사용하는 경우 모든 코드를 트라이 캐치 블록으로 랩핑하면 응용 프로그램이 안전하게 실행될 수 있습니다. if (extension_loaded('gd')) {
print_r(gd_info());
} else {
echo 'GD不可用。';
}
if (extension_loaded('imagick')) {
$imagick = new Imagick();
print_r($imagick->queryFormats());
} else {
echo 'ImageMagick不可用。';
}
로그인 후 복사
위에 표시된 바와 같이, 썸네일 생성을 담당하는 ImageMagick 스크립트에는 소스 이미지 유형과 관련된 코드가 포함되어 있지 않습니다. 동일한 코드를 사용하여 PNG 또는 TIF 파일뿐만 아니라 JPG 이미지를 처리 할 수 있습니다. 소스 이미지를 다른 유형으로 변환 해야하는 경우 메소드를 실행하기 전에 코드 줄을 추가하십시오.
imagecopyresampled()
더 명확합니까? 제 생각에는 GD 라이브러리 기능을 사용하여 이미지를 처리하는 것이 imagemagick만큼 편리하지 않습니다. 물론 GD에는 랩퍼가 객체 지향적으로 만들 수있는 일부 포장지가 있지만이 시점에서 패치처럼 느껴지기 시작합니다. imagecopyresized()
인기 GD 라이브러리는 기본적으로 모든 새로운 PHP 버전에 포함되어 있으므로이 라이브러리가 Imagemagick보다 다양한 프로젝트에서 더 자주 볼 수 있습니다. CakePHP 프로젝트에 이미지 업로드 및 썸네일 생성을 담당하는 구성 요소가 필요했을 때, 나는 내 요구에 맞는 GD를 기반으로 구성 요소를 빠르게 찾았습니다. Kohana 프레임 워크 이미지 라이브러리와 같은 두 개의 이미지 처리 라이브러리 중에서 선택할 수있는 잘 작성된 모듈을 찾을 수도 있지만 일반적이지 않을까 걱정됩니다.
대안
응용 프로그램에서 이미지 처리를 처리하는 방법을 결정할 때 특정 PHP 라이브러리를 고수 할 필요가 없습니다. 고려할 가치가있는 다른 솔루션이 있습니다
PHP 응용 프로그램 외부에서 실행되는 이미지 처리 스크립트를 사용하십시오. 내 앱 중 하나에서는 방문자가 브라우저 창에서 온라인에서 이미지를 온라인으로 변환 할 수있는 웹 페이지를 만들어야합니다. 나는 Caman.js JavaScript 이미지 처리 라이브러리를 사용하기로 결정했고 훌륭한 일을했습니다. 이 라이브러리는 Node.js 플랫폼에 포함 된 배경 스크립트로도 사용될 수 있으며, 이는 꾸준히 인기가 높아지고 있습니다.
클라우드 기반 이미지 처리 플랫폼을 사용하십시오. 클라우드 기반 솔루션은 작업을 수행 할 수 있습니다. 소스 파일을 전송 한 후 다양한 필터를 통해 변환 된 다양한 크기 또는 이미지의 썸네일을 얻을 수 있습니다. 너무 많은 코드를 작성할 필요가 없으며 서버 기능에 의해 제한되지 않습니다. Google을 열고 그러한 서비스를 제공하는 회사를 찾으십시오.
-
사용중인 구성 요소의 기능을 확인하십시오. 이미 앱에 연결된 서비스를 사용하여 이미지를 변환 할 수 있다는 사실에 놀랄 수도 있습니다. 예를 들어, Dropbox API는 5 가지 크기 중 하나로 JPG 또는 PNG 이미지를 얻을 수있는 썸네일 방법을 제공합니다. 라이브러리 및 API에 대한 문서를 확인하면 필요한 작업을 수행 할 수 있음을 알 수 있습니다.
요약 -
보시다시피, 각 이미지 처리 라이브러리에는 장점과 단점이 있습니다. GD 라이브러리는 널리 사용 가능하므로 어디에서나 작동 할 수 있습니다. 매우 인기가 있으므로이 라이브러리를 사용하는 많은 예제와 구성 요소를 쉽게 찾을 수 있습니다. 더 많은 사람들이 Imagemagick보다 GD 라이브러리에 익숙 할 수 있으므로 도움을받는 것도 더 쉽습니다.
Imagemagick은 더 많은 파일 유형을 지원하고 GD 라이브러리보다 더 많은 방법으로 이미지를 변환 할 수 있습니다. 또한 명확하고 고품질 코드를 작성할 수 있습니다.
마지막으로, 클라우드 이미지 처리 서비스와 같은 다른 대안이있어 두 라이브러리 모두에 대한 필요성을 완전히 제거 할 수 있습니다. 이 기사가 당신이 당신의 선택을하는 데 도움이되기를 바랍니다. -
이 기사에 대한 질문이나 의견이 있으시면 아래에 댓글을 달거나 Google을 통해 저에게 연락하십시오.
imagick 및 gd
의 FAQ 기능 측면에서 Imagick과 GD의 주요 차이점은 무엇입니까?
Imagick과 GD는 모두 PHP의 이미지 처리를위한 강력한 라이브러리입니다. 그러나 그들은 기능이 크게 다릅니다. 광범위한 기능 세트로 유명한 Imagick은 레이어 효과, 이미지 필터 및 색상 조정과 같은 고급 기능을 포함하여 다양한 이미지 처리 옵션을 제공합니다. 반면에 GD는 크고 간단하며 크기 조정, 자르기 및 간단한 드로잉 기능과 같은 기본 이미지 처리 작업에 중점을 둡니다. GD는 간단한 작업을 수행하기에 충분할 수 있지만 Imagick은 종종보다 복잡한 이미지 처리 요구 사항에 대한 첫 번째 선택입니다.
Imagick과 GD는 성능 측면에서 어떻게 비교됩니까?
성능은 작업 및 서버 환경에 따라 다를 수 있습니다. 일반적으로 Imagick은 광범위한 기능 세트로 인해 GD보다 더 많은 리소스를 소비하는 것으로 간주됩니다. 그러나 특히 복잡한 이미지 처리 작업을 처리 할 때 더 높은 품질의 결과를 얻는 경향이 있습니다. 반면에 GD는 일반적으로 더 빠르고 리소스가 적으며 자원이 제한된 간단한 작업이나 환경에 적합한 선택입니다.
imagick 또는 gd가 더 낫다. 큰 이미지를 처리하는 데 더 낫습니까?
imagick은 일반적으로 큰 이미지로 작업하는 데 더 적합합니다. Imagick은 "디스크 기반 픽셀 캐시"라는 기능을 지원하여 사용 가능한 메모리보다 큰 이미지를 처리 할 수 있기 때문입니다. 반면에 GD는이 기능을 지원하지 않으므로 대형 이미지, 특히 메모리가 제한된 서버에서 작업 할 때 어려움을 겪을 수 있습니다.
Imagick과 GD는 어떻게 투명성을 처리합니까?
Imagick과 GD는 투명성을 지원하지만 투명성을 약간 다르게 처리합니다. Imagick은 알파 채널 및 다양한 하이브리드 모드를 포함한 광범위한 투명성 옵션을 지원합니다. 반면에 GD는 투명성에 대한 지원이 제한되어 있으며 때로는 복잡한 투명성 효과를 다루기가 어렵습니다.
같은 프로젝트에서 Imagick과 GD를 사용할 수 있습니까?
예, Imagick과 GD는 동시에 같은 프로젝트에서 동시에 사용할 수 있습니다. 그러나이 두 라이브러리는 다른 구문 및 기능 이름을 사용하므로 코드가 둘 다 호환되어야하는지 확인해야합니다. 또한 동일한 프로젝트에서 두 라이브러리를 사용하면 코드의 복잡성이 증가하고 성능 문제를 일으킬 수 있으므로 일반적으로 가능한 경우 그 중 하나를 선택하는 것이 좋습니다.
더 광범위한 지원이있는 라이브러리 : Imagick 또는 GD?
Imagick과 GD는 모두 널리 지원되고 적극적으로 유지됩니다. 그러나 GD는 대부분의 PHP 설치에 기본적으로 포함되므로보다 보편적으로 사용할 수 있습니다. 반면에 Imagick은 일반적으로 별도로 설치해야하므로 때로는 호환성 문제를 일으킬 수 있습니다.
Imagick과 GD는 문서 및 지역 사회 지원 측면에서 어떻게 비교됩니까?
Imagick과 GD는 광범위한 문서와 활발한 커뮤니티 지원을 제공합니다. 그러나 GD는 더 긴 역사와 더 넓은 사용으로 인해 온라인에서 더 기성품 자원과 자습서를 보유하고 있습니다. Imagick은 좋은 문서를 가지고 있지만 특정 솔루션이나 예를 찾으려면 더 많은 파기가 필요할 수 있습니다.
Imagick 또는 GD에 보안 문제가 있습니까?
Imagick과 GD는 모두 안전한 라이브러리로 간주됩니다. 그러나 다른 소프트웨어와 마찬가지로 부적절하게 사용하면 악용 할 수도 있습니다. 항상 최신 버전의 라이브러리를 사용하고 보안 코딩을 위해 모범 사례를 따르십시오.
내 프로젝트를 위해 어떤 라이브러리를 선택해야합니까? Imagick 또는 GD?
imagick 또는 gd 선택은 프로젝트의 특정 요구에 따라 다릅니다. 고급 이미지 처리 기능이 필요하거나 큰 이미지를 처리 해야하는 경우 Imagick이 더 나은 선택 일 수 있습니다. 그러나 더 간단한 프로젝트를 진행하거나 리소스 제한 환경에서 작업하는 경우 GD가 더 나은 선택 일 수 있습니다.
프로젝트 중간에 GD에서 Imagick으로 전환 할 수 있습니까?
프로젝트 중간에 GD에서 Imagick으로 전환하는 것이 기술적으로 가능하지만, 이는 일반적으로 권장되지 않습니다. 두 라이브러리가 다른 구문 및 기능 이름을 사용하기 때문에 스위칭에는 코드를 크게 변경해야 할 수 있습니다. 스위치를 고려하고 있다면 일반적으로 프로젝트 시작시 결정을 내리는 것이 가장 좋습니다.
위 내용은 Imagick 대 GD의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!