package weapp const ( apiAICrop = "/cv/img/aicrop" apiScanQRCode = "/cv/img/qrcode" apiSuperResolution = "/cv/img/superResolution" ) // AICropResponse 图片智能裁剪后的返回数据 type AICropResponse struct { CommonError Results []struct { CropLeft uint `json:"crop_left"` CropTop uint `json:"crop_top"` CropRight uint `json:"crop_right"` CropBottom uint `json:"crop_bottom"` } `json:"results"` IMGSize struct { Width uint `json:"w"` Height uint `json:"h"` } `json:"img_size"` } // AICrop 本接口提供基于小程序的图片智能裁剪能力。 func AICrop(token, filename string) (*AICropResponse, error) { api := baseURL + apiAICrop return aiCrop(api, token, filename) } func aiCrop(api, token, filename string) (*AICropResponse, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } res := new(AICropResponse) if err := postFormByFile(url, "img", filename, res); err != nil { return nil, err } return res, nil } // AICropByURL 本接口提供基于小程序的图片智能裁剪能力。 func AICropByURL(token, url string) (*AICropResponse, error) { api := baseURL + apiAICrop return aiCropByURL(api, token, url) } func aiCropByURL(api, token, imgURL string) (*AICropResponse, error) { queries := requestQueries{ "access_token": token, "img_url": imgURL, } url, err := encodeURL(api, queries) if err != nil { return nil, err } res := new(AICropResponse) if err := postJSON(url, nil, res); err != nil { return nil, err } return res, nil } // QRCodePoint 二维码角的位置 type QRCodePoint struct { X uint `json:"x"` Y uint `json:"y"` } // ScanQRCodeResponse 小程序的条码/二维码识别后的返回数据 type ScanQRCodeResponse struct { CommonError CodeResults []struct { TypeName string `json:"type_name"` Data string `json:"data"` Position struct { LeftTop QRCodePoint `json:"left_top"` RightTop QRCodePoint `json:"right_top"` RightBottom QRCodePoint `json:"right_bottom"` LeftBottom QRCodePoint `json:"left_bottom"` } `json:"pos"` } `json:"code_results"` IMGSize struct { Width uint `json:"w"` Height uint `json:"h"` } `json:"img_size"` } // ScanQRCode 本接口提供基于小程序的条码/二维码识别的API。 func ScanQRCode(token, filename string) (*ScanQRCodeResponse, error) { api := baseURL + apiScanQRCode return scanQRCode(api, token, filename) } func scanQRCode(api, token, filename string) (*ScanQRCodeResponse, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } res := new(ScanQRCodeResponse) if err := postFormByFile(url, "img", filename, res); err != nil { return nil, err } return res, nil } // ScanQRCodeByURL 把网络文件上传到微信服务器。目前仅支持图片。用于发送客服消息或被动回复用户消息。 func ScanQRCodeByURL(token, imgURL string) (*ScanQRCodeResponse, error) { api := baseURL + apiScanQRCode return scanQRCodeByURL(api, token, imgURL) } func scanQRCodeByURL(api, token, imgURL string) (*ScanQRCodeResponse, error) { queries := requestQueries{ "access_token": token, "img_url": imgURL, } url, err := encodeURL(api, queries) if err != nil { return nil, err } res := new(ScanQRCodeResponse) if err := postJSON(url, nil, res); err != nil { return nil, err } return res, nil } // SuperResolutionResponse 图片高清化后的返回数据 type SuperResolutionResponse struct { CommonError MediaID string `json:"media_id"` } // SuperResolution 本接口提供基于小程序的图片高清化能力。 func SuperResolution(token, filename string) (*SuperResolutionResponse, error) { api := baseURL + apiSuperResolution return superResolution(api, token, filename) } func superResolution(api, token, filename string) (*SuperResolutionResponse, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } res := new(SuperResolutionResponse) if err := postFormByFile(url, "img", filename, res); err != nil { return nil, err } return res, nil } // SuperResolutionByURL 把网络文件上传到微信服务器。目前仅支持图片。用于发送客服消息或被动回复用户消息。 func SuperResolutionByURL(token, imgURL string) (*SuperResolutionResponse, error) { api := baseURL + apiSuperResolution return superResolutionByURL(api, token, imgURL) } func superResolutionByURL(api, token, imgURL string) (*SuperResolutionResponse, error) { queries := requestQueries{ "access_token": token, "img_url": imgURL, } url, err := encodeURL(api, queries) if err != nil { return nil, err } res := new(SuperResolutionResponse) if err := postJSON(url, nil, res); err != nil { return nil, err } return res, nil }