Warm tip: This article is reproduced from serverfault.com, please click

imagemagick-将白板清洁器脚本转换为php

(imagemagick - convert whiteboard cleaner script to php)

发布于 2014-12-07 14:47:30

我正在尝试使用imagick扩展名将此Imagemagick白板清洁脚本转换为纯PHP,以避免不得不诉诸于exec诸如此类的生成过程。

原始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?

Questioner
Nev Stokes
Viewed
1
Jacob Budin 2014-12-08 02:07:17

PECL Imagick扩展程序未实现(或使用)MagickWand's MagickMorphologyImage,后者是-morphology Convolve DoG:15,100,0原始命令中标志的接口

要使用convolveImage,你可能需要使用奇数矩阵

内核是一个矩阵,指定为用逗号分隔的整数列表(无空格),从顶部开始,从左到右排列。当前,仅支持奇数维内核,因此指定内核中的条目数必须为3 2 = 9、5 2 = 25、7 2 = 49等。

但我认为你无法像这样重新创建它(至少不能像原始图像那样高质量),因为原始标志使用计算出的高斯卷积DoG),你将无法使用更简单,更原始的卷积进行重新创建。