# sprity-krpano-xml
**Repository Path**: wuyouw/sprity-krpano-xml
## Basic Information
- **Project Name**: sprity-krpano-xml
- **Description**: Krpano 雪碧图处理工具,切图生成样式xml / A krpano-xml style processor for sprity
Krpano 精灵图(雪碧图 || sprites)完美解决方案
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2020-12-03
- **Last Updated**: 2021-12-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Krpano 精灵图(雪碧图 || sprites)完美解决方案
做过全景开发的同学肯定都知道Krpano这个强大的全景引擎,目前可以说是最好的全景引擎之一, 不仅可以显示全景图片/视频,还能进行各种交互,还有 WebVR 模式、健全的工具体系等等。
krpano 为了兼容 HTML5 和 Flash,搞了一套自己的 krpano-xml 脚本语言,用这个来编写界面。
这边文章要讨论的问题就是,如何优雅的在 krpano-xml 中使用精灵图(雪碧图 || sprites).
做全景播放器的时候,我们们通常会用到各种各样的图标,播放暂停啊,全屏VR啊什么的,如果每个图标都用单张图片来引入的话,势必会产生非常多的HTTP请求,而我们知道,过多的HTTP请求是页面性能的大杀器,还好 Krpano-xml 的 layer 提供了 crop 属性给我们,这个属性可以让我们对图片进行切割,只显示切割出来的区域,和 CSS 精灵图使用 background-image 和 background-position 来进行图片显示的方式非常类似。下面是 krpano crop 属性示例:
上述代码的意思就是,从 x=0 y=0 坐标开始,截取图片的64x64宽高的区域来显示。所以,显示图片不同区域范围的代码就可以像下面这样:
现在我们有了 krpano 精灵图的使用方法,但是当你有很多张图片的时候,手动管理这些坐标点的位置是一件非常非常非常麻烦的事情。
CSS 精灵图已经有各种成熟的解决方案,比如博主喜欢的 gulp 插件 [sprity](https://npmjs.org/package/sprity) ,它可以一键拼合零碎图片,并且生成 CSS/LESS/SASS 代码,可惜 krpano-xml 相对来说太小众了,我找遍 google 并没有找到一个好的解决方案,所以是时候造个轮子了😁。
`sprity-krpano-xml` 是一个基于 sprity 的krpano-xml style 样式生成器。一键解决 krpano 精灵图部署问题。
强烈建议先阅读 [sprity](https://github.com/sprity/sprity) 的官方文档
# sprity-krpano-xml 中文文档
[](http://badge.fury.io/js/sprity-krpano-xml) [](https://travis-ci.org/JailBreakC/sprity-krpano-xml) [](https://david-dm.org/JailBreakC/sprity-krpano-xml)
> 一个基于 [sprity](https://github.com/sprity/sprity) 的 krpano-xml style 样式生成器
## 依赖
- [sprity](https://npmjs.org/package/sprity) version >= 1.0
## 安装
Install with [npm](https://npmjs.org/package/sprity-krpano-xml)
npm install sprity sprity-krpano-xml --save-dev
全局使用 `sprity-krpano-xml` 请将 `sprity` 和 `sprity-krpano-xml` 一起全局安装
npm install sprity sprity-krpano-xml -g
## 示例
JavaScript:
var sprite = require('sprity');
sprite.create({
...
style: 'style.xml',
processor: 'krpano-xml'
cssPath: './images/dist/',
...
}, function () {
console.log('done');
});
命令行:
sprity out/ src/*.png -s style.xml -p krpano-xml
执行过之后,会生成一个合成好的雪碧图,和一个 style.xml 里面是 krpano-xml格式的 style 代码。
引入 style.xml 配合 style name 就可以吧雪碧图轻松的应用到 layer 上面。
例:
layer[the-camera-layer].loadstyle(icon-cart);
## 更多
请查看 [sprity](https://npmjs.org/package/sprity) 文档
---
[](https://gitter.im/sprity/sprity?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
#### 如果看完文档还不知怎么用的请看包教包会版⤵️
var gulp = require('gulp'),
gulpif = require('gulp-if'),
sprity = require('sprity');
// 合并图片,生成雪碧图
gulp.task('sprites', function () {
return sprity.src({
src: './images/src/**/*.{png,jpg}',
style: 'sprite.xml',
margin: 6,
cssPath: './images/dist/',
orientation: 'binary-tree',
// 请确保已经 npm install sprity-krpano-xml
processor: 'krpano-xml',
})
.pipe(gulpif('*.png', gulp.dest('./images/dist/'), gulp.dest('./krpano/')))
.on('end', function() {
console.log('end');
});
});
----------------
# sprity-krpano-xml English version
[](http://badge.fury.io/js/sprity-krpano-xml) [](https://travis-ci.org/JailBreakC/sprity-krpano-xml) [](https://david-dm.org/JailBreakC/sprity-krpano-xml)
> A krpano-xml style processor for [sprity](https://npmjs.org/package/sprity)
## Requirements
- [sprity](https://npmjs.org/package/sprity) version >= 1.0
## Install
Install with [npm](https://npmjs.org/package/sprity-krpano-xml)
npm install sprity sprity-krpano-xml --save-dev
If you want to use `sprity-krpano-xml` with the command line interface of `sprity` install it globally.
npm install sprity sprity-krpano-xml -g
## Usage
On commandline:
sprity out/ src/*.png -s style.xml -p krpano-xml
In JavaScript:
var sprite = require('sprity');
sprite.create({
...
style: 'style.xml',
processor: 'krpano-xml'
cssPath: './images/dist/',
...
}, function () {
console.log('done');
});
#### [krpano-xml style](http://krpano.com/docu/xml/#style) usage example
xml
layer[the-camera-layer].loadstyle(icon-cart);
## More
See [sprity](https://npmjs.org/package/sprity) documentation
---
[](https://gitter.im/sprity/sprity?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
## 在线css sprite/css精灵/雪碧图css样式生成工具
[雪碧图css样式在线生成工具](http://tools.jb51.net/code/css_sprite)