Imagick 未检测到 inkscape
Imagick not detecting inkscape
在为 php8 编译和安装 imagick 之后(并解决了导致出现的问题),我现在可以将 svgs 转换为图像。但是,在安装 inkscape 并检查 imagick 的委托后,imagick 没有检测和使用 inkscape。没有任何进一步的错误需要解决,并且在浏览了大量 google 页之后,我确信我要么错过了应该安装或配置的东西,要么我显然做错了什么。如果有任何指示 and/or 帮助,我将不胜感激。
您将在下面找到有关版本、代码和配置的信息,如果需要任何其他信息,请询问,我很乐意提供。
使用 convert -list format | grep SVG
grepping SVG 渲染器为我提供了 3 种基本渲染器(MSVG、SVG 和 SVGZ)。
用于渲染最终图像的 php 代码非常基础,应该与手头的问题无关,但无论如何:
class SvgRenderer
{
private static ?Crop $_crop = null;
private static Imagick $_im;
// ...
public static function stringToPng32($svg)
{
self::$_im = new Imagick();
self::$_im->setFont('../fonts/arial.ttf');
self::$_im->readImageBlob($svg);
self::$_im->setImageFormat('png32');
if(self::$_crop !== null) self::_applyCrop();
return self::$_im->getImageBlob();
}
// ...
}
php、inkscape和imagick的版本是:
PHP: 8.0.9
Inkscape:0.92.2
想象:7.1.0-0
svg 委托规则:
<delegate decode="svg" command=""@RSVGDecodeDelegate@" -o "%o" "%i""/>
<!-- Change export-filename to export-png for inkscape < 1.0 -->
<delegate decode="svg:decode" stealth="True" command=""@SVGDecodeDelegate@" "%s" --export-png="%s" --export-dpi="%s" --export-background="%s" --export-background-opacity="%s" > "%s" 2>&1"/>
第一张图片是使用 imagick 和 inkscape 在本地渲染的,第二张是在服务器上渲染的 运行 完全相同的代码。
预期结果:
当前结果:
经过更多的搜索,我终于找到了导致问题的原因...
Inkscape 0.92 是 centos 的最新版本(不包括 snap 或其他沙盒版本),它不适用于 ImageMagick 7.0+ 降级到 6.9.33 解决了这个问题。
在为 php8 编译和安装 imagick 之后(并解决了导致出现的问题),我现在可以将 svgs 转换为图像。但是,在安装 inkscape 并检查 imagick 的委托后,imagick 没有检测和使用 inkscape。没有任何进一步的错误需要解决,并且在浏览了大量 google 页之后,我确信我要么错过了应该安装或配置的东西,要么我显然做错了什么。如果有任何指示 and/or 帮助,我将不胜感激。
您将在下面找到有关版本、代码和配置的信息,如果需要任何其他信息,请询问,我很乐意提供。
使用 convert -list format | grep SVG
grepping SVG 渲染器为我提供了 3 种基本渲染器(MSVG、SVG 和 SVGZ)。
用于渲染最终图像的 php 代码非常基础,应该与手头的问题无关,但无论如何:
class SvgRenderer
{
private static ?Crop $_crop = null;
private static Imagick $_im;
// ...
public static function stringToPng32($svg)
{
self::$_im = new Imagick();
self::$_im->setFont('../fonts/arial.ttf');
self::$_im->readImageBlob($svg);
self::$_im->setImageFormat('png32');
if(self::$_crop !== null) self::_applyCrop();
return self::$_im->getImageBlob();
}
// ...
}
php、inkscape和imagick的版本是:
PHP: 8.0.9
Inkscape:0.92.2
想象:7.1.0-0
svg 委托规则:
<delegate decode="svg" command=""@RSVGDecodeDelegate@" -o "%o" "%i""/>
<!-- Change export-filename to export-png for inkscape < 1.0 -->
<delegate decode="svg:decode" stealth="True" command=""@SVGDecodeDelegate@" "%s" --export-png="%s" --export-dpi="%s" --export-background="%s" --export-background-opacity="%s" > "%s" 2>&1"/>
第一张图片是使用 imagick 和 inkscape 在本地渲染的,第二张是在服务器上渲染的 运行 完全相同的代码。
预期结果:
当前结果:
经过更多的搜索,我终于找到了导致问题的原因... Inkscape 0.92 是 centos 的最新版本(不包括 snap 或其他沙盒版本),它不适用于 ImageMagick 7.0+ 降级到 6.9.33 解决了这个问题。