最近需要在服务器上直接生成数据图表的PNG图片,我知道客户端的解决方案很多,比如:HighChart、amCharts、JS Charts、gRaphael、Aweasome Chart JS、D3等等 可以列出几百种,都是需要javascript运行环境,但我的需求是需要直接生成PNG图片,然后通过邮件啊什么的发送出去。也就是一定要在服务器端绘制好数据图表,生成png图片。
目前服务器端的绘图,PHP语言的有几个都不是免费的:jpGraph、pChart,包括生成html的phpCHART也是需要付费的。而Google Chart API的php封装其实是直接请求google服务器,然后返回数据,对于速度上有影响。其他的一些php免费的如:libchart、GraPHPite、ez Components的Graph库,效果都不好,绘图不够平滑,功能也比较少。
基本上PHP的那些解决方案都不是非常好。
其他语言,我知道python有个matplot库,但是我不懂python语法,也不清楚怎么样。
还有R语言是可以绘图,但是对R一知半解,不知道绘图效果怎样。
专业级的绘图如:metapost、asymptote都需要一个非常巨大的texlive支持,一直不想在服务器上折腾这个。
现在我用的是phplot,一个php绘图库,基本需求能满足,但是绘图控制上不能很顺手,功能也有欠缺,生成的图片质量不高。写的很多,是因为我在问之前,已经Google了好几天了,没有很好的解决方案,所以才来问的。
想问问各位有没有服务器端生成高质量图表图片的经验?大家采用了什么解决办法?
回复内容:
最近需要在服务器上直接生成数据图表的PNG图片,我知道客户端的解决方案很多,比如:HighChart、amCharts、JS Charts、gRaphael、Aweasome Chart JS、D3等等 可以列出几百种,都是需要javascript运行环境,但我的需求是需要直接生成PNG图片,然后通过邮件啊什么的发送出去。也就是一定要在服务器端绘制好数据图表,生成png图片。
目前服务器端的绘图,PHP语言的有几个都不是免费的:jpGraph、pChart,包括生成html的phpCHART也是需要付费的。而Google Chart API的php封装其实是直接请求google服务器,然后返回数据,对于速度上有影响。其他的一些php免费的如:libchart、GraPHPite、ez Components的Graph库,效果都不好,绘图不够平滑,功能也比较少。
基本上PHP的那些解决方案都不是非常好。
其他语言,我知道python有个matplot库,但是我不懂python语法,也不清楚怎么样。
还有R语言是可以绘图,但是对R一知半解,不知道绘图效果怎样。
专业级的绘图如:metapost、asymptote都需要一个非常巨大的texlive支持,一直不想在服务器上折腾这个。
现在我用的是phplot,一个php绘图库,基本需求能满足,但是绘图控制上不能很顺手,功能也有欠缺,生成的图片质量不高。写的很多,是因为我在问之前,已经Google了好几天了,没有很好的解决方案,所以才来问的。
想问问各位有没有服务器端生成高质量图表图片的经验?大家采用了什么解决办法?
可以变相的通过网页截图来实现把...phantom模拟截取一个动态生成的html的截图,速度挺快的,又能用到所有js的高级特性.出来的图片能够用pipe的方式回传给php的(exec就能接收)
HighChart 不是有个exporting功能吗?用CURL获取PNG不就好啦
上面几个方法好像在性能和稳定性上面都没有很好的保障,我也有这样的需求,坐等方法。
wkhtmltopdf用这个可以将网页转为图片或者pdf
phpexecel

To protect the application from session-related XSS attacks, the following measures are required: 1. Set the HttpOnly and Secure flags to protect the session cookies. 2. Export codes for all user inputs. 3. Implement content security policy (CSP) to limit script sources. Through these policies, session-related XSS attacks can be effectively protected and user data can be ensured.

Methods to optimize PHP session performance include: 1. Delay session start, 2. Use database to store sessions, 3. Compress session data, 4. Manage session life cycle, and 5. Implement session sharing. These strategies can significantly improve the efficiency of applications in high concurrency environments.

Thesession.gc_maxlifetimesettinginPHPdeterminesthelifespanofsessiondata,setinseconds.1)It'sconfiguredinphp.iniorviaini_set().2)Abalanceisneededtoavoidperformanceissuesandunexpectedlogouts.3)PHP'sgarbagecollectionisprobabilistic,influencedbygc_probabi

In PHP, you can use the session_name() function to configure the session name. The specific steps are as follows: 1. Use the session_name() function to set the session name, such as session_name("my_session"). 2. After setting the session name, call session_start() to start the session. Configuring session names can avoid session data conflicts between multiple applications and enhance security, but pay attention to the uniqueness, security, length and setting timing of session names.

The session ID should be regenerated regularly at login, before sensitive operations, and every 30 minutes. 1. Regenerate the session ID when logging in to prevent session fixed attacks. 2. Regenerate before sensitive operations to improve safety. 3. Regular regeneration reduces long-term utilization risks, but the user experience needs to be weighed.

Setting session cookie parameters in PHP can be achieved through the session_set_cookie_params() function. 1) Use this function to set parameters, such as expiration time, path, domain name, security flag, etc.; 2) Call session_start() to make the parameters take effect; 3) Dynamically adjust parameters according to needs, such as user login status; 4) Pay attention to setting secure and httponly flags to improve security.

The main purpose of using sessions in PHP is to maintain the status of the user between different pages. 1) The session is started through the session_start() function, creating a unique session ID and storing it in the user cookie. 2) Session data is saved on the server, allowing data to be passed between different requests, such as login status and shopping cart content.

How to share a session between subdomains? Implemented by setting session cookies for common domain names. 1. Set the domain of the session cookie to .example.com on the server side. 2. Choose the appropriate session storage method, such as memory, database or distributed cache. 3. Pass the session ID through cookies, and the server retrieves and updates the session data based on the ID.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 English version
Recommended: Win version, supports code prompts!

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SublimeText3 Linux new version
SublimeText3 Linux latest version