【发布时间】:2017-01-09 20:02:56
【问题描述】:
我正在尝试将 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 标记),它会返回给我:
【问题讨论】:
-
您在此处看到的内容看起来像是打印为文本的 JPEG 文件标题。您的 SVG 文件中有 JPEG 图像吗?
-
@PaulLeBeau 不,只有 SVG 标签,例如折线之类的东西......
-
@PaulLeBeau 现在我在我的问题中添加了一个 PNG。
-
为什么我可以在您的输出中看到
<div>标签?请附上输出的 PNG 文件,而不是浏览器开发工具窗口的屏幕截图。 -
@PaulLeBeau 没有生成 PNG。浏览器中也是这样出现的……