-
Notifications
You must be signed in to change notification settings - Fork 1
/
SkiaToMirai.kt
39 lines (35 loc) · 1.25 KB
/
SkiaToMirai.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package xyz.cssxsh.mirai.skia
import net.mamoe.mirai.utils.*
import org.jetbrains.skia.*
import org.jetbrains.skia.svg.*
import xyz.cssxsh.skia.*
import java.io.*
/**
* 从 [Surface] 获取图片快照资源
* @see Surface.makeImageSnapshot
* @see ExternalResource
*/
@JvmOverloads
public fun Surface.makeSnapshotResource(format: EncodedImageFormat = EncodedImageFormat.PNG): SkiaExternalResource {
return SkiaExternalResource(image = makeImageSnapshot(), format = format)
}
/**
* 从 [File] 获取图片快照资源, 用于转换图片格式,例如 WEBP to PNG
*
* 注意: SVG 格式的矢量图 因为不一定包含 高度 和 宽度,所以不适用此方法, 可见 [SVGDOM.makeImageSnapshot]
* @see Image.makeFromEncoded
* @see ExternalResource
*/
@JvmOverloads
public fun File.makeImageResource(format: EncodedImageFormat = EncodedImageFormat.PNG): SkiaExternalResource {
return SkiaExternalResource(image = Image.makeFromEncoded(bytes = this.readBytes()), format = format)
}
/**
* 从 [Data] 获取图片资源
*
* @see ExternalResource
*/
@JvmOverloads
public fun Data.toImageResource(formatName: String = ExternalResource.DEFAULT_FORMAT_NAME): SkiaExternalResource {
return SkiaExternalResource(origin = this, formatName = formatName)
}