服务端如何快速生成图片

如何快速生成图片

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9

想了想,以下两种方式:

  1. OSS的水印

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

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

HTML可以考虑:html2canvas.js

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

5年前 评论

后端生成太慢了

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

调用第三方服务生成罗

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

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

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

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);
}

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

巧了,我昨天开始研究真个,今天刚刚完美解决,代码分享给你,用的最新的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);
                });
        };
5年前 评论
wongvio (作者) 5年前
wsAdmin (楼主) 5年前
wongvio (作者) 5年前

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

5年前 评论

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

5年前 评论

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

5年前 评论

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