ibrand/laravel-miniprogram-poster

iBrand 的 Laravel 小程序海报工具

v3.0 2019-06-12 09:05 UTC

This package is auto-updated.

Last update: 2024-09-16 14:39:02 UTC


README

微信小程序生成朋友圈分享图文海报的一种实用解决方案

Build Status Scrutinizer Code Quality Code Coverage Build Status

特性

  1. 基于 HTML 可实现复杂的文字、图片、阴影效果。
  2. 清晰度和文件大小适中
  3. 使用简单、即插即用
  4. 存储模型对象和图片对应关系,避免重复生成图片。

体验

扫码进入商品详情页,分享生成图文体验

果酱小店

安装

composer require ibrand/laravel-miniprogram-poster:~2.0 -vvv
  • Laravel 5.5 以下版本,在 config/app.php 文件的 providers 添加 iBrand\Poster\PhantoMmagickServiceProvider::class

  • 图片保存在 storage/app/public 下,因此需要执行 php artisan storage:link

  • 如需自定义配置,请执行 php artisan vendor:publish --provider="iBrand\Poster\PhantoMmagickServiceProvider" --tag="config"

配置项

return [
	'default'    => [
		'storage' => env('DEFAULT_POSTER_STORAGE', 'qiniu'),
	],
	//图片存储位置
	'disks'      => [
		'qiniu'            => [
			'driver'     => 'qiniu',
			//七牛云access_key
			'access_key' => env('QINIU_ACCESS_KEY', ''),
			//七牛云secret_key
			'secret_key' => env('QINIU_SECRET_KEY', ''),
			//七牛云文件上传空间
			'bucket'     => env('QINIU_BUCKET', ''),
			//七牛云cdn域名
			'domain'     => env('QINIU_DOMAIN', ''),
			//与cdn域名保持一致
			'url'        => env('QINIU_DOMAIN', ''),
			'root'       => storage_path('app/public/qiniu'),
		],
		'MiniProgramShare' => [
			'driver'     => 'local',
			'root'       => storage_path('app/public/share'),
			'url'        => env('APP_URL') . '/storage/share',
			'visibility' => 'public',
		],
	],
	//图片宽度
	'width'      => '575px',
	//放大倍数
	'zoomfactor' => 1.5,
	//1-9,9质量最高
	'quality'    => 9,
	//是否压缩图片
	'compress'   => true,
	//是否删除废弃图片文件
	'delete'     => true,
];

注:生成海报默认存储在七牛云,通过配置项 default.storage 来设置。如果不适用七牛云,可以通过修改 .env 中的 DEFAULT_POSTER_STORAGE 来修改默认存储 storage。

使用

定义路由和视图

Router::get('share/goods','ShareController@goods')->name('share.goods');

public function goods()
{
	//你的业务逻辑代码,获取到相关数据
    return view('share.goods',compact('data'));
}

此步骤通过 Laravel 路由视图来实现海报样式展示

生成图片

生成图片,不关联模型。

$url = route('share.goods');
$result = MiniProgramShareImg::generateShareImage($url);

关联模型

执行命令生成 posters

php artisan vendor:publish
php artisan migrate

生成图片并关联模型

$goods = Goods::find(1);
$result = MiniProgramShareImg::run($goods, $url);

生成图片、关联模型并重新生成图片

$goods = Goods::find(1);
$result = MiniProgramShareImg::run($goods, $url,true);

返回结果示例

    [
        'url'  => 'http://xxx.png',   图片访问url
        'path' => 'path/to/image', 图片文件路径
    ]

字体安装

如果需要实现复杂的字体效果,需要安装字体。例如,在 CentOS 上没有微软雅黑的字体,因此如果生成的图片有指定的特殊字体,需要在服务器上进行安装。

  • Windows 将下载的字体文件复制到 C:\Windows\Fonts 目录下或者双击字体文件进行安装
  • mac 双击下载的字体文件进行安装
  • centos
# 安装微软雅黑
wget -P /tmp/ https://iyoyo.oss-cn-hangzhou.aliyuncs.com/mirror/fonts/msyh.ttf
wget -P /tmp/ https://iyoyo.oss-cn-hangzhou.aliyuncs.com/mirror/fonts/msyhbd.ttf
wget -P /tmp/ https://iyoyo.oss-cn-hangzhou.aliyuncs.com/mirror/fonts/msyhl.ttf
cd /usr/share/fonts/lyx/
mkdir chinese
cd chinese
mv /tmp/msyhbd.ttf ./
chmod 755 *.ttf
yum -y install mkfontscale
mkfontscale
mkfontdir
fc-cache -fv

资源

项目基于 PhantomMagick

贡献源代码

如果你发现任何错误或问题,请 提交 ISSUE

果酱云社区

点击跳转

  • 全网真正免费的 IT 课程平台

  • 专注于综合 IT 技术的在线课程,致力于打造优质、高效的 IT 在线教育平台

  • 课程方向包含 Python、Java、前端、大数据、数据分析、人工智能等热门 IT 课程

  • 300+免费课程任你选择

点击跳转