mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
feat: add webp image convert function
This commit is contained in:
parent
4061904945
commit
2a4ea28f4d
16
coolq/bot.go
16
coolq/bot.go
@ -153,9 +153,23 @@ func (bot *CQBot) uploadLocalImage(target message.Source, img *LocalImageElement
|
|||||||
defer func() { _ = f.Close() }()
|
defer func() { _ = f.Close() }()
|
||||||
img.Stream = f
|
img.Stream = f
|
||||||
}
|
}
|
||||||
if mt, ok := mime.CheckImage(img.Stream); !ok {
|
mt, ok := mime.CheckImage(img.Stream)
|
||||||
|
if !ok {
|
||||||
return nil, errors.New("image type error: " + mt)
|
return nil, errors.New("image type error: " + mt)
|
||||||
}
|
}
|
||||||
|
if mt == "image/webp" && base.ConvertWebpImage != false {
|
||||||
|
newname := img.File + ".png"
|
||||||
|
err := global.ConvertImagePng(img.File, newname)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "convert webp image error")
|
||||||
|
}
|
||||||
|
f, err := os.Open(newname)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "open image error")
|
||||||
|
}
|
||||||
|
defer func() { _ = f.Close() }()
|
||||||
|
img.Stream = f
|
||||||
|
}
|
||||||
i, err := bot.Client.UploadImage(target, img.Stream, 4)
|
i, err := bot.Client.UploadImage(target, img.Stream, 4)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -46,3 +46,8 @@ func ExtractCover(src string, target string) error {
|
|||||||
cmd := exec.Command("ffmpeg", "-i", src, "-y", "-ss", "0", "-frames:v", "1", target)
|
cmd := exec.Command("ffmpeg", "-i", src, "-y", "-ss", "0", "-frames:v", "1", target)
|
||||||
return errors.Wrap(cmd.Run(), "extract video cover failed")
|
return errors.Wrap(cmd.Run(), "extract video cover failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ConvertImagePng(src string, target string) error {
|
||||||
|
cmd := exec.Command("ffmpeg", "-i", src, "-y", "-f", "png", target)
|
||||||
|
return errors.Wrap(cmd.Run(), "convert image to png failed")
|
||||||
|
}
|
||||||
|
@ -30,6 +30,7 @@ var (
|
|||||||
SplitURL bool // 是否分割URL
|
SplitURL bool // 是否分割URL
|
||||||
ForceFragmented bool // 是否启用强制分片
|
ForceFragmented bool // 是否启用强制分片
|
||||||
SkipMimeScan bool // 是否跳过Mime扫描
|
SkipMimeScan bool // 是否跳过Mime扫描
|
||||||
|
ConvertWebpImage bool // 是否转换Webp图片
|
||||||
ReportSelfMessage bool // 是否上报自身消息
|
ReportSelfMessage bool // 是否上报自身消息
|
||||||
UseSSOAddress bool // 是否使用服务器下发的新地址进行重连
|
UseSSOAddress bool // 是否使用服务器下发的新地址进行重连
|
||||||
LogForceNew bool // 是否在每次启动时强制创建全新的文件储存日志
|
LogForceNew bool // 是否在每次启动时强制创建全新的文件储存日志
|
||||||
@ -79,6 +80,7 @@ func Init() {
|
|||||||
ExtraReplyData = conf.Message.ExtraReplyData
|
ExtraReplyData = conf.Message.ExtraReplyData
|
||||||
ForceFragmented = conf.Message.ForceFragment
|
ForceFragmented = conf.Message.ForceFragment
|
||||||
SkipMimeScan = conf.Message.SkipMimeScan
|
SkipMimeScan = conf.Message.SkipMimeScan
|
||||||
|
ConvertWebpImage = conf.Message.ConvertWebpImage
|
||||||
ReportSelfMessage = conf.Message.ReportSelfMessage
|
ReportSelfMessage = conf.Message.ReportSelfMessage
|
||||||
UseSSOAddress = conf.Account.UseSSOAddress
|
UseSSOAddress = conf.Account.UseSSOAddress
|
||||||
AllowTempSession = conf.Account.AllowTempSession
|
AllowTempSession = conf.Account.AllowTempSession
|
||||||
|
@ -55,6 +55,7 @@ type Config struct {
|
|||||||
RemoveReplyAt bool `yaml:"remove-reply-at"`
|
RemoveReplyAt bool `yaml:"remove-reply-at"`
|
||||||
ExtraReplyData bool `yaml:"extra-reply-data"`
|
ExtraReplyData bool `yaml:"extra-reply-data"`
|
||||||
SkipMimeScan bool `yaml:"skip-mime-scan"`
|
SkipMimeScan bool `yaml:"skip-mime-scan"`
|
||||||
|
ConvertWebpImage bool `yaml:"convert-webp-image"`
|
||||||
} `yaml:"message"`
|
} `yaml:"message"`
|
||||||
|
|
||||||
Output struct {
|
Output struct {
|
||||||
|
@ -43,6 +43,8 @@ message:
|
|||||||
extra-reply-data: false
|
extra-reply-data: false
|
||||||
# 跳过 Mime 扫描, 忽略错误数据
|
# 跳过 Mime 扫描, 忽略错误数据
|
||||||
skip-mime-scan: false
|
skip-mime-scan: false
|
||||||
|
# 是否自动转换 WebP 图片
|
||||||
|
convert-webp-image: false
|
||||||
|
|
||||||
output:
|
output:
|
||||||
# 日志等级 trace,debug,info,warn,error
|
# 日志等级 trace,debug,info,warn,error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user