服务端如何快速生成图片

如何快速生成图片

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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9

想了想,以下两种方式:

  1. OSS的水印

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

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

HTML可以考虑:html2canvas.js

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

6个月前 评论

后端生成太慢了

6个月前 评论
wsAdmin (楼主) 6个月前

调用第三方服务生成罗

6个月前 评论
wsAdmin (楼主) 6个月前
Epona

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

6个月前 评论
wsAdmin (楼主) 6个月前
Epona (作者) 6个月前
wsAdmin (楼主) 6个月前
Epona (作者) 6个月前
wsAdmin (楼主) 6个月前

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

6个月前 评论
123wild (作者) 6个月前
wsAdmin (楼主) 6个月前
123wild (作者) 6个月前

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

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

6个月前 评论

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

6个月前 评论
青风百里

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

6个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!