You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在邮件中嵌入图表?求PHP/Laravel相关解决方案

解决方案推荐

一、直接生成图片格式图表的PHP/Laravel库

1. PHPlot

纯PHP编写的开源免费图表库,依赖PHP的GD扩展(绝大多数服务器默认预装),支持柱状图、折线图、饼图、散点图等常用图表类型,可直接生成PNG、JPG格式图片。

  • 优势:零成本、轻量、无需外部依赖,配置简单,适合小型项目快速落地需求。
  • 简单示例:
require_once 'phplot.php';
$plot = new PHPlot(800, 600);
$plot->SetImageBorderType('plain');
$plot->SetPlotType('bars');
$plot->SetDataValues([
    ['周一', 120],
    ['周二', 180],
    ['周三', 150],
]);
$plot->SetTitle('每日访问量');
// 保存到文件用于邮件嵌入,也可直接输出
$plot->SetOutputFile('daily_report.png');
$plot->DrawGraph();

Laravel中可封装成服务类,生成图片后通过邮件附件或Base64编码嵌入正文。

2. ChartPHP

开源免费的GD基图表库,支持多种图表类型,输出格式包含PNG,提供简洁API,易于集成到Laravel项目。

  • 优势:文档友好,内置多种样式配置,无需复杂设置即可生成美观图表。

二、SVG转图片的PHP工具

若已用goat1000's svggraph生成SVG,可通过以下工具转成邮件兼容的图片格式:

1. Imagick扩展

服务器安装ImageMagick及对应PHP imagick 扩展后,可直接将SVG内容转换为PNG、WebP等格式,纯服务端处理,无需外部工具。

  • 简单示例:
$svgContent = file_get_contents('generated_chart.svg');
$imagick = new Imagick();
$imagick->readImageBlob($svgContent);
$imagick->setImageFormat('png');
$imagick->writeImage('chart.png');
$imagick->clear();
$imagick->destroy();

Laravel中可结合存储系统,将转换后的图片保存到本地或云存储,再嵌入邮件。

2. SVG-GD

纯PHP实现的SVG转GD资源库,无需任何外部扩展,将SVG解析后转换为GD支持的格式,最终可输出PNG、JPG。

  • 优势:无需服务器额外配置,适合无法安装扩展的环境,开源免费、轻量易用。

内容的提问来源于stack exchange,提问作者PaulH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:27:22