一、前言
最近因业务需要开发了一款地产类微信小程序,开发的过程中需要实现分享给好友和分享到朋友圈的功能。好友分享可以直接调用微信小程序API来实现,调用时需提供一张5:4的图片,如果不提供则使用默认截图,为了更好的效果我们一般会选择自行生成图片。而分享到朋友圈的功能由于小程序并未开放,则需要我们生成一张长图供用户自行发送朋友圈。下面我以生成好友好享图片为例来讲讲如何在.Net Core环境中使用SkiaSharp绘制图片。

(图1:最终效果图)
二、SkiaSharp类库介绍
SkiaSharp是一个基于Google的Skia图形库(https://skia.org/)打造的供.Net平台使用的跨平台的2D绘图API类库。它提供一个全面的2D绘图API,能用在移动端、服务端和桌面端呈现图像。
目前SkiaSharp可供以下平台使用:
- .NET Standard 1.3
- .NET Core
- Tizen
- Xamarin.Android
- Xamarin.iOS
- Xamarin.tvOS
- Xamarin.watchOS
- Xamarin.Mac
- Windows Classic Desktop (Windows.Forms / WPF)
- Windows UWP (Desktop / Mobile / Xbox / HoloLens)
github地址:https://github.com/mono/SkiaSharp
三、准备工作
1、新建一个.Net Core API项目,这里我命名为ShareImage。
2、安装SkiaSharp,使用NuGet命令或者包管理器安装:
| 1 | nuget install SkiaSharp |
3、准备底图
分析最终效果图(图1),找出不会变化的部分,让UI抠下来作为底图。可以将底图保存在项目的Images目录下,我这里存为bg.png。

(图2:底图)
4、准备字体
我这里中文部分用了PingFangSC Regular字体,数字部分用了PingFangSC Medium字体。在项目根目录下新建Fonts目录,复制这两种字体,我这里分别命名为PIngfangScRegular.ttf和PingfangScMedium.ttf。由于载入字体是一个耗时的操作,因此我们可以定义一个静态类TypeFace,预先将字体载入。
