2014-12-07 3 views
-1

이 imagagicky whiteboard cleaning scriptexec 등으로 스폰 프로세스에 의존하지 않으려면 imagick 확장자를 사용하여 순수 PHP로 변환하려고합니다.화이트 보드 클리너 스크립트를 PHP로 변환

원래 bash는 스크립트를

#!/bin/bash 
convert $1 -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 $2 

내가 초기에서 Convolve 형태 커널 매트릭스와 사투를 벌인거야이, 다른 모든 것들 내가 생각 작동하는 것 같다 :

<?php 

$channel = null; 

$convolveKernel = array(15, 100, 0); 
$negateGreys = false; 

$blurRadius = 0; 
$blurSigma = 1; 

$levelBlack = 60; // 60% 
$levelGamma = 0.1; 
$levelWhite = 91; // 91% 

$image = new Imagick($file); 

try { 
    $image->convolveImage($convolveKernel, $channel); 
    $image->negateImage($negateGreys, $channel); 
    $image->normalizeImage($channel); 
    $image->blurImage($blurRadius, $blurSigma, $channel); 
    $image->levelImage($levelBlack, $levelGamma, $levelWhite, $channel); 

    header('Content-type: image/jpeg'); 
    echo $image; 
} catch (ImagickException $e) { 
    echo $e->getMessage(); 
} 

내가 예외를 받고 있어요 "The kernel must contain a square number of elements"하지만, 또한 흑백 레벨 값의 스케일에 대해 궁금합니다. 0-100, 0-255 또는 0-65535입니까?

답변

0

PECL Imagick 확장 doesn't implement (또는 사용) MagickWand의 MagickMorphologyImage은 원래 명령의 -morphology Convolve DoG:15,100,0 플래그에 대한 인터페이스입니다.

convolveImage을 사용하려면 likely need to use an odd-numbered matrix거야 :

이 커널은 (공백없이) 정수의 쉼표로 구분 된 목록으로 지정된 행렬, 맨 윗줄로 시작, 좌우에 주문 . 현재, 단지 홀수 치수 커널이 지원되고, 따라서 특정 커널의 엔트리 수 등 3 2 = 9, 5 2 = 25, 7 2 = 49

있어야

하지만 원래 깃발은 계산 된 회선 Difference of Gaussians (DoG)을 사용하기 때문에 원래대로 고품질로는 만들지 못할 것이라고 생각합니다. 더 단순하고보다 원시적 인 컨볼 루션을 사용하여 재현하십시오.

관련 문제