Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Imagick::getImageFormat返回;巴布亚新几内亚“;对于svg_Php_Svg_Imagemagick_Imagick - Fatal编程技术网

Php Imagick::getImageFormat返回;巴布亚新几内亚“;对于svg

Php Imagick::getImageFormat返回;巴布亚新几内亚“;对于svg,php,svg,imagemagick,imagick,Php,Svg,Imagemagick,Imagick,我使用imagick检查PHP中图像的格式,如下所示: $image = new Imagick('simple.svg'); echo $image->getImageFormat(); 令我惊讶的是,输出是PNG,尽管Imagick::queryFormats()将SVG列为已知类型。 从apache到PHP,再到imagick,所有内容都应该是最新的(全新安装): 我尝试了不同的.svg文件,都返回了PNG。我尝试的一个简单的svg文件来自Wikipedia。你知道为什么imagi

我使用imagick检查PHP中图像的格式,如下所示:

$image = new Imagick('simple.svg');
echo $image->getImageFormat();
令我惊讶的是,输出是
PNG
,尽管
Imagick::queryFormats()
SVG
列为已知类型。 从apache到PHP,再到imagick,所有内容都应该是最新的(全新安装):

我尝试了不同的.svg文件,都返回了
PNG
。我尝试的一个简单的svg文件来自Wikipedia。你知道为什么imagick返回一个错误的格式吗?正确检测光栅图形,如jpg和png

编辑:

Imagick::identificationimage
之前使用
Imagick::pingImage
也会返回PNG:

[mimetype] => image/png 
[format] => PNG (Portable Network Graphics) 
[units] => Undefined 
[type] => Bilevel 
[colorSpace] => Gray
[compression] => Undefined 
[fileSize] => 7.05KB 
[geometry] => Array ( [width] => 320 [height] => 372 )
[resolution] => Array ( [x] => 72 [y] => 72 )
.svg文件绝对不是PNG文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="480" height="543.03003" viewBox="0 0 257.002 297.5" xml:space="preserve">
<g transform="matrix(0.8526811,0,0,0.8526811,18.930632,21.913299)">
<polygon points="8.003,218.496 0,222.998 0,74.497 8.003,78.999 8.003,218.496 "/>
<polygon points="128.501,287.998 128.501,297.5 0,222.998 8.003,218.496 128.501,287.998 " />
<polygon points="249.004,218.496 257.002,222.998 128.501,297.5 128.501,287.998 249.004,218.496 " />
<polygon points="249.004,78.999 257.002,74.497 257.002,222.998 249.004,218.496 249.004,78.999 " />
<polygon points="128.501,9.497 128.501,0 257.002,74.497 249.004,78.999 128.501,9.497 " />
<polygon points="8.003,78.999 0,74.497 128.501,0 128.501,9.497 8.003,78.999 " />
</g>
</svg>

这个问题似乎在ImageMagick 7上得到了解决+ 但我在使用ImageMagick 7.0.6-0在Ubuntu16上识别PDF时遇到了类似的问题。不知什么原因,它一直返回PNG

我没有确定的解决方法,但是有一种方法可以通过重载Imagick来解决这些问题

<?php
class MyImagick extends Imagick{
    private function getimageidentifiction() {
        $filename       = parent::getimagefilename();
        return exec('identify -format "%m\n" -quiet "' . addslashes($filename) .'"| head -n 1');
    }

    public function getimageformat() {
        return $this->getimageidentifiction();
    }
}

这个问题似乎在ImageMagick 7上得到了解决+
但我在使用ImageMagick 7.0.6-0在Ubuntu16上识别PDF时遇到了类似的问题。不知什么原因,它一直返回PNG

我没有确定的解决方法,但是有一种方法可以通过重载Imagick来解决这些问题

<?php
class MyImagick extends Imagick{
    private function getimageidentifiction() {
        $filename       = parent::getimagefilename();
        return exec('identify -format "%m\n" -quiet "' . addslashes($filename) .'"| head -n 1');
    }

    public function getimageformat() {
        return $this->getimageidentifiction();
    }
}

Imagemagick处理光栅图像;我想知道svg在读取时是否被转换?你可以用Imagick::pingImage ping图像我不知道会返回什么。我尝试了ping和
identificationimage
,结果在我的原始帖子中。使用当前的ImageMagick-7.0.4-1,
magick identify*.svg
返回file.svg svg 480x543 480x543+0+0 16位sRGB 813B 0.000u 0:00。079@user7367183请随意打开一个bug在-我会看看它…今年。Imagemagick使用光栅图像;我想知道svg在读取时是否被转换?你可以用Imagick::pingImage ping图像我不知道会返回什么。我尝试了ping和
identificationimage
,结果在我的原始帖子中。使用当前的ImageMagick-7.0.4-1,
magick identify*.svg
返回file.svg svg 480x543 480x543+0+0 16位sRGB 813B 0.000u 0:00。079@user7367183请随意打开一个bug-我会看看它…今年。不仅Imagick7受到影响,我在ImageMagick 6.8.9-9上也遇到同样的问题不仅Imagick7受到影响,我在ImageMagick 6.8.9-9上也遇到同样的问题