src/ispriter.js
function readImagesInfo(styleObjList, onDone) {

    // pngjs 没有提供同步 api, 所以只能用异步的方式读取图片信息
    zTool.forEach(styleObjList, function(styleObj, url, next) {

        if (url === 'length') {
            return next(); // 跳过 styleObjList 的 length 字段
        }
        var imageInfo = imageInfoCache[url];

        var onGetImageInfo = function(imageInfo) {
            if (imageInfo) {
                imageInfoCache[url] = imageInfo;

                // 从所有style里面，选取图片宽高最大的作为图片宽高
                setImageWidthHeight(styleObj, imageInfo);

                styleObj.imageInfo = imageInfo;

            } else { // 没有读取到图片信息, 可能是图片签名或格式不对, 读取出错了
                delete imageInfoCache[url];
                delete styleObjList[url];
                styleObj.cssRules.forEach(function(style) {
                    style.mergeBackgound();
                });
            }
            next();
        }

        if (imageInfo) {
            onGetImageInfo(imageInfo);
        } else {
            readImageInfo(styleObj.imageAbsUrl, onGetImageInfo);
        }
    }, onDone);
}
function readImagesInfo(styleObjList, onDone) {

    // pngjs 没有提供同步 api, 所以只能用异步的方式读取图片信息
    zTool.forEach(styleObjList, function(styleObj, url, next) {

        if (url === 'length') {
            return next(); // 跳过 styleObjList 的 length 字段
        }
        var imageInfo = imageInfoCache[url];

        var onGetImageInfo = function(imageInfo) {
            if (imageInfo) {
                imageInfoCache[url] = imageInfo;

                // 从所有style里面，选取图片宽高最大的作为图片宽高
                setImageWidthHeight(styleObj, imageInfo);

                styleObj.imageInfo = imageInfo;

            } else { // 没有读取到图片信息, 可能是图片签名或格式不对, 读取出错了
                delete imageInfoCache[url];
                delete styleObjList[url];
                styleObj.cssRules.forEach(function(style) {
                    style.mergeBackgound();
                });
            }
            next();
        }

        if (imageInfo) {
            onGetImageInfo(imageInfo);
        } else {
            readImageInfo(styleObj.imageAbsUrl, onGetImageInfo);
        }
    }, onDone);
}
function readImagesInfo ( styleObjList , onDone ) { // pngjs 没有提供同步 api, 所以只能用异步的方式读取图片信息 zTool . forEach ( styleObjList , function ( styleObj , url , next ) { if ( url === 'length' ) { return next ( ) ; // 跳过 styleObjList 的 length 字段 } var imageInfo = imageInfoCache [ url ] ; var onGetImageInfo = function ( imageInfo ) { if ( imageInfo ) { imageInfoCache [ url ] = imageInfo ; // 从所有style里面，选取图片宽高最大的作为图片宽高 setImageWidthHeight ( styleObj , imageInfo ) ; styleObj . imageInfo = imageInfo ; } else { // 没有读取到图片信息, 可能是图片签名或格式不对, 读取出错了 delete imageInfoCache [ url ] ; delete styleObjList [ url ] ; styleObj . cssRules . forEach ( function ( style ) { style . mergeBackgound ( ) ; } ) ; } next ( ) ; } if ( imageInfo ) { onGetImageInfo ( imageInfo ) ; } else { readImageInfo ( styleObj . imageAbsUrl , onGetImageInfo ) ; } } , onDone ) ; }
**************************************************************** 3. 收集图片相关信息 **************************************************************** 
读取图片的内容和大小
@param  {StyleObjList}   styleObjList
@param  {Function} onDone
**************************************************************** 3 . 收集图片相关信息 **************************************************************** 读取图片的内容和大小