需求背景:
配置企业微信链接消息,需要一张封面图片。是直接填写图片链接的。由于企业微信会对设置的封面图片进行截取操作,不规则的图片会被截取部分作为封面图片。产品经理想要,一个完整的封面图片128*128px的。
var imgReady = ( function ( ) {
var list = [ ] , intervalId = null ,
tick = function ( ) {
var i = 0 ;
for ( ; i < list. length; i++ ) {
list[ i] . end ? list. splice ( i-- , 1 ) : list[ i] ( ) ;
} ;
! list. length && stop ( ) ;
} ,
stop = function ( ) {
clearInterval ( intervalId) ;
intervalId = null ;
} ;
return function ( url, ready, load, error ) {
var onready, width, height, newWidth, newHeight,
img = new Image ( ) ;
img. src = url;
if ( img. complete) {
ready . call ( img) ;
load && load . call ( img) ;
return ;
} ;
width = img. width;
height = img. height;
img. onerror = function ( ) {
error && error . call ( img) ;
onready. end = true ;
img = img. onload = img. onerror = null ;
} ;
onready = function ( ) {
newWidth = img. width;
newHeight = img. height;
if ( newWidth !== width || newHeight !== height || newWidth * newHeight > 1024 ) {
ready . call ( img) ;
onready. end = true ;
} ;
} ;
onready ( ) ;
img. onload = function ( ) {
! onready. end && onready ( ) ;
load && load . call ( img) ;
img = img. onload = img. onerror = null ;
} ;
if ( ! onready. end) {
list. push ( onready) ;
if ( intervalId === null ) intervalId = setInterval ( tick, 40 ) ;
} ;
} ;
} ) ( ) ;
imgReady ( values. linkCoverUrl, function ( ) {
if ( this . width != 128 || this . height != 128 ) {
return message. error ( "链接消息封面图片尺寸请使用128*128px尺寸图片" )
} else {
}
} ) ;