2012-03-05 3 views
5

imagick을 사용하여 이미지로 투명한 영역을 PHP로 제거하려고합니다. Imagick::trimImageImagick에서 트리밍 색상을 설정하는 방법은 무엇입니까?

이미지에서 배경 색깔 가장자리를 제거

이미지 마법 (magick)은 trim 방법을 제공한다. 이 방법은 ImageMagick 버전 6.2.9 이상으로 Imagick을 컴파일 한 경우 사용할 수 있습니다.

Imagick이 트리밍 할 수있는 색을 어떻게 설정합니까?

다음 스크립트는 배경색을 회색으로 설정합니다. 그러나 아래에서 볼 수 있듯이 트림은 파란색 배경색을 제거합니다.

$im = new Imagick("1.png"); 
// Set background color to grey 
$im->setImageBackgroundColor(new ImagickPixel("rgb(213,213,213)")); 
$im->trimImage(0); 
$im->writeImage('2.png'); 

enter image description here

트림 색상을 제한 할 수있는 방법이 있습니까?

imagick 모듈 버전 => 2.1.1-RC1

+0

은 당신이 기대하는 것보다 문서는 "배경색"의 다소 느슨한 정의를 사용 될 수 있다는 것을 생각한다. ImageMagick 자체의 다듬기는 이미지의 * 모서리 픽셀 *의 색상을 취하여 거기에서 작업함으로써 배경을 제거합니다. 그것은 분명히 당신의 사건에서 일어나는 것 같습니다. 이를 확인하려면 [매뉴얼] (http://www.imagemagick.org/Usage/crop/#trim)의 3 가지 색상 예제를 사용하십시오. 한 행에 세 개의 정사각형 색상이있는 이미지를 만들고, 귀하의 트림, 그리고 만약 당신이 단지 센터 광장으로 남아있어 참조하십시오. 이 예에서 –

+0

은 결과 이미지가 정사각형 인 것을 알기 때문에 ... 정사각형이 맞는지 확인하십시오. 거기에 할 수있는 기능이 있습니다 .... 이미지가 사각형이고 "제거"또는 주위의 배경이 사각형 이미지를 생성 할 때 나는 그것을 강제로 사각형으로 만듭니다 ... – menardmam

답변

7

매트 깁슨 힌트는 적합한 솔루션를 알려준 : http://www.imagemagick.org/Usage/crop/#trim_color

매트는 이미 손질 방법은 이미지를 트리밍 코너 색상 소요 설명한다. 설명서의 해당 솔루션은 해결 방법입니다. 트리밍 메서드를 호출하기 전에 이미지 주위에 테두리를 그립니다.

$img = new Imagick("stripes.gif"); 
// Set the color to trim: 
$img->borderImage("#FF0000", 1, 1); 
$img->trimImage(0); 
$img->setImagePage(0, 0, 0, 0); 
$img->writeImage("test.jpg");' 

Demo

+0

내 생각 엔 옳았습니다. –

-1

당신은 16 진수 코드로 배경 색상을 지정하는 것이 아니라 그것을 위해 ImagickPixel의 인스턴스를 시도?

$im->setImageBackgroundColor(#D5D5D5); 
+0

감사하지만 칼은 있지만 결과는 그대로 유지됩니다. 똑같다. – jantimon

+0

setImageBackgroundColor : "이제 색상을 매개 변수로 나타내는 문자열을 허용합니다. 이전 버전에서는 ImagickPixel 객체 만 허용합니다." – jantimon

관련 문제