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);
}
**************************************************************** 3. 收集图片相关信息 **************************************************************** 
读取图片的内容和大小
@param  {StyleObjList}   styleObjList
@param  {Function} onDone