From e22965eb0c013d7f3218b265a4cb559c4f8d9d65 Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Tue, 28 Dec 2021 21:44:10 +0800 Subject: [PATCH] message: remove GroupImage Width & Height sometimes these fields may be zero causing send failures --- client/image.go | 13 ++++--------- message/image.go | 10 +++------- message/message.go | 4 ---- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/client/image.go b/client/image.go index e3736b9f..34fd57c8 100644 --- a/client/image.go +++ b/client/image.go @@ -3,7 +3,6 @@ package client import ( "bytes" "encoding/hex" - "image" "io" "math/rand" "os" @@ -81,8 +80,6 @@ func (c *QQClient) UploadGroupImage(groupCode int64, img io.ReadSeeker) (*messag } return nil, errors.Wrap(err, "upload failed") ok: - _, _ = img.Seek(0, io.SeekStart) - i, _, _ := image.DecodeConfig(img) var imageType int32 = 1000 _, _ = img.Seek(0, io.SeekStart) tmp := make([]byte, 4) @@ -90,7 +87,7 @@ ok: if bytes.Equal(tmp, []byte{0x47, 0x49, 0x46, 0x38}) { imageType = 2000 } - return message.NewGroupImage(binary.CalculateImageResourceId(fh), fh, rsp.FileId, int32(length), int32(i.Width), int32(i.Height), imageType), nil + return message.NewGroupImage(binary.CalculateImageResourceId(fh), fh, rsp.FileId, int32(length), imageType), nil } func (c *QQClient) UploadGroupImageByFile(groupCode int64, path string) (*message.GroupImageElement, error) { @@ -134,8 +131,6 @@ func (c *QQClient) UploadGroupImageByFile(groupCode int64, path string) (*messag } return nil, errors.Wrap(err, "upload failed") ok: - _, _ = img.Seek(0, io.SeekStart) - i, _, _ := image.DecodeConfig(img) var imageType int32 = 1000 _, _ = img.Seek(0, io.SeekStart) tmp := make([]byte, 4) @@ -143,7 +138,7 @@ ok: if bytes.Equal(tmp, []byte{0x47, 0x49, 0x46, 0x38}) { imageType = 2000 } - return message.NewGroupImage(binary.CalculateImageResourceId(fh), fh, rsp.FileId, int32(length), int32(i.Width), int32(i.Height), imageType), nil + return message.NewGroupImage(binary.CalculateImageResourceId(fh), fh, rsp.FileId, int32(length), imageType), nil } func (c *QQClient) UploadPrivateImage(target int64, img io.ReadSeeker) (*message.FriendImageElement, error) { @@ -191,7 +186,7 @@ func (c *QQClient) ImageOcr(img interface{}) (*OcrResponse, error) { } _ = b.Close() } - rsp, err := c.sendAndWait(c.buildImageOcrRequestPacket(url, strings.ToUpper(hex.EncodeToString(e.Md5)), e.Size, e.Width, e.Height)) + rsp, err := c.sendAndWait(c.buildImageOcrRequestPacket(url, strings.ToUpper(hex.EncodeToString(e.Md5)), e.Size, 480, 720)) if err != nil { return nil, err } @@ -210,7 +205,7 @@ func (c *QQClient) QueryGroupImage(groupCode int64, hash []byte, size int32) (*m return nil, errors.New(rsp.Message) } if rsp.IsExists { - return message.NewGroupImage(binary.CalculateImageResourceId(hash), hash, rsp.FileId, size, rsp.Width, rsp.Height, 1000), nil + return message.NewGroupImage(binary.CalculateImageResourceId(hash), hash, rsp.FileId, size, 1000), nil } return nil, errors.New("image does not exist") } diff --git a/message/image.go b/message/image.go index 41b11100..92c9db84 100644 --- a/message/image.go +++ b/message/image.go @@ -16,8 +16,6 @@ type GroupImageElement struct { ImageType int32 ImageBizType ImageBizType Size int32 - Width int32 - Height int32 Md5 []byte Url string @@ -64,15 +62,13 @@ const ( /* ------ Implementations ------ */ -func NewGroupImage(id string, md5 []byte, fid int64, size, width, height, imageType int32) *GroupImageElement { +func NewGroupImage(id string, md5 []byte, fid int64, size, imageType int32) *GroupImageElement { return &GroupImageElement{ ImageId: id, FileId: fid, Md5: md5, Size: size, ImageType: imageType, - Width: width, - Height: height, Url: "https://gchat.qpic.cn/gchatpic_new/1/0-0-" + strings.ReplaceAll(binary.CalculateImageResourceId(md5)[1:37], "-", "") + "/0?term=2", } } @@ -95,8 +91,8 @@ func (e *GroupImageElement) Pack() (r []*msg.Elem) { Useful: proto.Int32(1), // Origin: 1, BizType: proto.Int32(5), - Width: &e.Width, - Height: &e.Height, + Width: proto.Int32(720), + Height: proto.Int32(480), FileId: proto.Int32(int32(e.FileId)), FilePath: &e.ImageId, ImageType: &e.ImageType, diff --git a/message/message.go b/message/message.go index c585c009..c1189862 100644 --- a/message/message.go +++ b/message/message.go @@ -462,8 +462,6 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement { FileId: int64(elem.CustomFace.GetFileId()), ImageId: elem.CustomFace.GetFilePath(), Size: elem.CustomFace.GetSize(), - Width: elem.CustomFace.GetWidth(), - Height: elem.CustomFace.GetHeight(), Url: url, ImageBizType: func() ImageBizType { if len(elem.CustomFace.PbReserve) == 0 { @@ -561,8 +559,6 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement { FileId: int64(flash.FlashTroopPic.GetFileId()), ImageId: flash.FlashTroopPic.GetFilePath(), Size: flash.FlashTroopPic.GetSize(), - Width: flash.FlashTroopPic.GetWidth(), - Height: flash.FlashTroopPic.GetHeight(), Md5: flash.FlashTroopPic.Md5, Flash: true, })