服务端如何快速生成图片

如何快速生成图片

使用场景:比如一些项目中需要生成复杂的海报图片,因为图片上有一些随机的信息,所以不能提前生成,只能每次点击时生成海报图片,而后加载,这样导致非常慢,有好的解决办法吗?

目前使用PHPGD库生成海报图片

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9

想了想,以下两种方式:

  1. OSS的水印

文档地址:https://help.aliyun.com/document_detail/44...

  1. 后端接口生成参数,前端生成。

HTML可以考虑:html2canvas.js

教程:https://www.jianshu.com/p/abd9e9c5ba20

4年前 评论

后端生成太慢了

4年前 评论
wsAdmin (楼主) 4年前

调用第三方服务生成罗

4年前 评论
wsAdmin (楼主) 4年前
Epona

我们之前也是服务端生成的,后来改成前端生成了。后端返回必要的参数。

4年前 评论
wsAdmin (楼主) 4年前
Epona (作者) 4年前
wsAdmin (楼主) 4年前
Epona (作者) 4年前
wsAdmin (楼主) 4年前

php GD库还行吧如果是只有文字的话那就比较快点了,在贴图片的话可能会慢点,但是可以用curl优化一下就成了
public static function getHttpImg($url)
{
$info = curl_init();
curl_setopt($info, CURLOPT_RETURNTRANSFER, true);
curl_setopt($info, CURLOPT_HEADER, 0);
curl_setopt($info, CURLOPT_NOBODY, 0);
curl_setopt($info, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($info, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($info, CURLOPT_URL, $url);
$output = curl_exec($info);
curl_close($info);
return imagecreatefromstring($output);
}

4年前 评论
123wild (作者) 4年前
wsAdmin (楼主) 4年前
123wild (作者) 4年前

巧了,我昨天开始研究真个,今天刚刚完美解决,代码分享给你,用的最新的html2canvas.min.js,不要用boot上那个,版本太老了,你去官网 (http://html2canvas.hertzen.com/) 下一个最新的,保证好用

function createShareImg() {
                new html2canvas(document.getElementById('domToImgArea'), {
                  backgroundColor: "#fff",
                  dpi: window.devicePixelRatio * 2,
                  scale: 3,
                  allowTaint: true,
                  useCORS: true
                }).then(canvas => {
                    var image = new Image();
                    image.crossOrigin = "Anonymous";
                    image.src = canvas.toDataURL("image/png");
                    $("#shareImg").attr("src",image.src);
                });
        };
4年前 评论
wongvio (作者) 4年前
wsAdmin (楼主) 4年前
wongvio (作者) 4年前

我之前做过一个简单的奖状生成,博客:PHP 生成奖状 不过我只是填充的文字,到没有太慢

4年前 评论

扩展库imagick,先预处理成SVG,然后直接转成PNG输出或者保存在服务器。

4年前 评论

我们的方案是后端生成图片,返回给前端, wkhtmltopdf。另一种方式,可以使用canvas
html2canvas

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!