我正在尝试将SVG文件转换为PNG或JPG,以便在浏览器的<div>
中显示它,只需按一下按钮即可将其加载。
SVG没有格式错误,因为它在浏览器上正确显示。
我用:
ob_start();
require("svgoutput.php");
$svg = ob_get_clean();
$image = new Imagick();
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$svg;
$image->readImageBlob($svg);
$image->setImageFormat("png");
header("Content-Type: image/png");
echo $image->getImageBlob();
如果我检索$svg
变量,它会正确地开始和结束所有SVG标记。
但不是给我一张图片,而是给我回报:
此外,即使如果它的内容显示为文本,它也太小,内容太少。
我做错了什么?
编辑:如果我强制png输出(在base64中编码并将其输出为img
标签),它会返回给我:
答案 0 :(得分:0)
我明白了。
我已经在文档的另一部分调用了header
,因此不再适用,所以我决定将其编码为base64并将其放在img
标记中,如下所示:
<img src="data:image/png;base64,<?php echo $base64; ?>" alt="" />
输出的图像是空白的,因为svg末尾有一个<br>
标签,我忘了删除它。现在它有效。
以下是完整的代码(已验证):
<?php
ob_start();
require("index2.php");
$svg = ob_get_clean();
$image = new Imagick();
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$svg;
$image->readImageBlob($svg);
$image->setImageFormat("png");
$image = $image->getImageBlob();
$base64 = base64_encode($image);
?>
<img src="data:image/png;base64,<?php echo $base64; ?>" alt="" />