制作CSS精灵的工具?[关闭]


126

有什么好的工具可以制作CSS精灵?

理想情况下,我想给它一个图像目录和一个引用这些图像的现有.css文件,并使其创建具有所有小图像优化的大图像,并更改我的.css文件以引用这些图像。

至少我希望它获取图像目录并生成一个大的精灵,以及将每个精灵用作背景所必需的.css。

有没有很好的photoshop插件或功能完备的应用程序可以做到这一点?



您能否详细说明一下,是否要在一个较大的图像上编译所有子画面,然后使用CSS显示包含正确子画面的图像部分。(滑动门技术)
teh_noob

1
有没有一种方法可以更改背景颜色,以便可以在Spritepad上看到我的白色图标?
吉姆(Jim)

24
我真的不明白为什么这是封闭的??似乎有很多很好的有用答案。可以说这应该是一个超级用户问题,因为我没有提到任何特定的编程语言,但我喜欢我得到的答案,而且它们显然对许多人有用。
Simon_Weaver

3
请上帝不要删除这个问题,它是互联网上针对该问题最有用的列表,并且肯定与编程有关(即使它不是说的编程问题)。这绝对是一个判断电话,应该被mod强制关闭;这是社区投票闭合系统是什么....
BlueRaja -丹尼Pflughoeft

Answers:


46

这将为您完成90%的工作:CSS Sprite Generator。您仍然需要自己编辑规则,但是该工具将为您提供新CSS文件所需的代码片段。


@ben完美!假设它有效;-)
Simon_Weaver,

1
我对这个工具有些不满意,所以我选择了它作为我的选择答案。它最终裁剪了我的图像,并不能很好地解释为什么它在图像之间留下了很大的空白
Simon_Weaver

我不喜欢这种解决方案,尽管我认为它可以正常工作。SpriteMe似乎工作得更好。
Chuck Le Butt 2010年

2
该工具的问题在于图像质量不高。
吉姆(Jim)

50

Instant Sprite是我正在使用的浏览器内CSS Sprite生成器。它确实非常快,但没有其他功能那么多。它目前仅在Firefox或Chrome中工作,因为它使用JavaScript FileReader和HTML Canvas在Web浏览器内部生成了没有上传的精灵。


1
哇,多么棒的工具。谢谢!
维维安河

自从您发布到这里以来,我已经使用您的工具在某些生产网站上工作。非常简单容易。
维维安河

7
+1。您的工具比我尝试过的其他工具要好得多。
Ed Bayiates 2012年

3
这是迄今为止最直观的
示例

2
感谢大家!@Harsh,我同意这种布局-我在很早以前就开始尝试这种布局,但从未完全起作用:github.com/bgrins/InstantSprite/tree/bin-pack
Brian Grinstead

31

现在有史蒂夫·索德斯(Steve Souders)的《 Sprite Me》。只是尝试一下,它似乎工作得很好。

这是链接http://spriteme.org/,这是宣布它的博客文章。

http://www.stevesouders.com/blog/2009/09/14/spriteme/


2
+1这非常易于使用:只需导航至所需页面,然后单击SpriteMe书签...即可自动创建图像和CSS!
Chuck Le Butt 2010年

这是一个很好的工具,但是它需要图像的ZIP文件,并且将子画面放入的顺序是ZIP顺序。Brian的以下工具可让您上传文件并拖放以更改顺序。
Ed Bayiates 2012年

我喜欢它可以免费提供的源代码
lkraav 2013年

13

这看起来很有希望:

http://csssprites.org/

我也发现这篇文章有一些有用的信息,甚至还有一些值得一读的读者评论。

显然Google Web工具包也有一些功能-因此,如果您使用它,可能值得一试。


似乎该页面不再起作用了……
Bob,

smartsprites.osinski.name重命名为csssprites.org,所以我为您编辑了它。根据我在这里看到的内容,它似乎是可以集成到构建过程中的少数几个选项之一。
ripper234 2011年

9

这绝对是合法的。已保存的spritemaps IMHO是关键,因此,只有相关的图像和代码行将随时间变化,而不必在每次图像内容更改时重新计算整个坐标集。
lkraav


6

发现这相当快,因为500K的上传限制可能很痛苦。源代码在这里


为什么上传500kb会很痛苦?我可能永远也不想上传> 100kb
Simon_Weaver,

我说“可能”会很痛苦。排序取决于应用程序吗?..充满中等大小PNG的zip文件,例如,在相当大的网格上〜〜〜可能接近此数字。如果所有的位图都很小,那么可以肯定/没有问题。
Scott Evernden 09年

1
是的,但是css sprites的全部目的是防止许多请求加载很多小的图像。如果您确实有那么多小精灵,则加载将花费很长时间,而在此时间内不会显示任何内容。最好保留它们,我认为最多为100kb。您可以总是做几个
Simon_Weaver

我在图像方面做了很多工作。也许不是很少的CSS位图。所以也许这就是为什么我要提出警告。您的需求有所不同/确定。在大多数宽带上,一秒钟就会到达500kb。我是第一个为您的查询提供可接受的答案的公司,在这里我被拒绝投票并捍卫我的语言?随便...
斯科特·埃弗登

这对我来说很痛苦,因为我开始使用的图像最终的尺寸超过了该限制,因此我不得不裁剪或优化后才能使用它。
2011年


4

尚不清楚它是否可以进入核心ASP.NET框架,但这是一个用于csssprites的Microsoft Codeplex项目:

http://aspnet.codeplex.com/releases/view/50869

如果您喜欢它-使用它-或就像这个想法一样,然后添加评论。我认为这在ASP.NET框架中将是一件很棒的事情。还没有亲自使用过它(我必须自己发明轮子),但是它得到了很好的评价。


它包括以下组件:

  • 用于自动生成精灵和嵌入式图像的API
  • 提供方便的API调用方式的控件和助手

第二版中添加的功能:

  • Web窗体的CSS链接控件(为用户的浏览器选择正确的CSS文件,但不显示图像)
  • 使用App_Sprites以外的自定义文件夹路径
  • 更改子画面图像的平铺方向
  • 将生成的CSS与用户自己的CSS合并

未来版本中正在考虑的功能:

  • 自动选择最有效的精灵背景颜色
  • 自动缩小渲染的CSS
  • NET 3.5编译


3

不是直接的答案,而是对我的开发人员和Web集成商的考虑,只需考虑将每个Sprite调整为2的幂。例如16像素或32像素网格。它使计算CSS文件中的偏移量变得更加容易。两者之间的所有空格都无关紧要,因为gifd和png格式压缩得很好。


一个好提示,尽管我主要是尝试将文本标题(每个1-2kb)组合到一个文件中。我不太担心空白,因为我知道它会被压缩掉-我只是不完全理解为什么制作精灵的工具会如此大量
Simon_Weaver

需要注意的是-虽然图像中的空白将被压缩以进行传输,但它会被扩展并在加载浏览器时占用内存。盲目使用自动精灵生成工具可能会导致生成大量图像,从而使这些页面上的内存使用量增加。在对图像进行分组以形成子图形表时需要格外小心,以使其保持在合理范围内。
山姆·福斯特

山姆:是的!稍后找到这个。如果精灵图像非常宽或很高,则需要考虑!尤其适用于手机应用程序(较少的内存)。Simon:空格可能是由于CSS的限制。即使在背景上不重复使用时,子画面图像也将通过填充,行高以及基本所有元素的背景区域(边距和边框)显示出来。假设您有一个链接图标。如果链接跨越多行,则精灵的其他图标可能会显示出来。添加足够的空格会使它更具“弹性”。

@Simon_Weaver-根据此处的所有人反馈,我发布了一个简单的精灵工具stackoverflow.com/a/13281578/1162141
technosaurus





2

有一个名为ActiveSprites的新工具,它是active_assets gem的一部分。

GitHub:http : //bitly.com/eRTwU4

您使用ruby dsl定义精灵,然后执行“ rake sprites”,并生成精灵和相应的样式表。

拉德!

这是一些示例代码,

# config/sprites.rb
Rails.application.sprites do
  sprite 'sprites/sprite1.png' => 'sprites/sprite1.css' do
    _'sprite_images/sprite1/1.png' => 'a.one'
    _'sprite_images/sprite1/2.png' => 'span.two'
  end
end

2

https://github.com/northpoint/SpeedySprite

该工具采用一种新颖的方法,它可以将您请求的图像作为http服务动态地组合在一起。这使整个过程非常简单(无需预处理,可以随时更改图像):启动服务,然后在HTML中引用所需的任何图像:

<link href="css/my-images-dir/" rel="stylesheet">
<div class="my-image-name-here" />

由于它是动态的,因此您甚至可以从一组动态图像(例如缩略图页面)中制作精灵。虽然不支持JPEG,但是PNG和GIF可以正常工作。


1

我建议您使用Sprite Master Web。我会自动生成精灵表并为您导出CSS代码。它总是尝试使用高级算法生成最小的Sprite表。

这是屏幕截图和youtube视频

在此处输入图片说明


值得注意的是,这不是免费或开源的应用程序,但价格仅为3.99美元。它的构建良好,并且具有良好的PNG压缩。
t.mikael.d 2012年

仅Mac。Bummer,这个看起来很有希望。
Mahn 2013年

1

这些工具都不符合我的要求,所以我写了一个使用Mark Tylers的微型图像库mtpixel(现在是mtcelledit的一部分)的工具。)的工具,它不是超级广泛,但可以通过mtpixel的内置函数轻松扩展,这些函数包括:灰度,颜色反转,旋转,锐化,量化,后验,翻转(垂直和水平),变换,rgb->索引,indexed-> rgb,边缘检测,浮雕,绘制多边形,文本等。

您要做的就是将一组图像作为args传递(支持png,gif和jpeg),它将输出一个名为sprite.png的rgb png以及有用的图像切片数据到stdout。我在bash脚本中使用它来分割整个图像目录并输出切片数据以自动生成css(希望最终使其能够用一些有创意的sed / awk自动替换现有的img标签)

小狗linux的二进制软件包将在这里:

http://murga-linux.com/puppy/viewtopic.php?t=82009

我的用例只需要将图像垂直拼接成新的png,就可以完成所有工作,但是我的源代码是公共领域,而mtcelledit库是gpl3。使用mtpixel静态链接时,二进制文件小于100kb(动态链接时只有几kb),而其他依赖项只有libpng,libjpeg和libgif(以及带有mtmt官方格式的freetype,但我不需要文本支持,所以我注释掉静态版本中的freetype位)

随时根据自己的需要进行修改:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <mtpixel.h> 

int main( int argc, char *argv[] ){ 
int i=0,height=0,width=0,y=0; 
mtpixel_init(); 
mtImage *imglist[argc]; 
argc--; 
do{   imglist[i] = mtpixel_image_load( argv[i+1] ); 
   height+=imglist[i]->height; 
   if (imglist[i]->width > width) width=imglist[i]->width; 
} while (++i < argc); 
imglist[argc]=mtpixel_image_new_rgb(width,height); 
imglist[argc]->palette.trans=0; 
i=0; 
do{   if (imglist[i]->type == MTPIXEL_IMAGE_INDEXED) 
      mtpixel_image_paste(imglist[argc],mtpixel_image_to_rgb(imglist[i]),mtpixel_brush_new(),0 ,y); 
   else mtpixel_image_paste(imglist[argc],imglist[i],mtpixel_brush_new(),0 ,y); 
   printf("name=%s;width=%d;height=%d;y_offset=%d\n",argv[i+1],imglist[i]->height,imglist[i]->width,y); 
   y+=imglist[i]->height; 
   mtpixel_image_destroy( imglist[i] ); 
}while (++i < argc); 
   mtpixel_image_save( imglist[argc], "sprite.png", MTPIXEL_FILE_TYPE_PNG, 5 ); 
mtpixel_quit(); 
return 0; 
}

0

如果您使用的是.net,请访问http://www.RequestReduce.com。它不仅会自动创建Sprite文件,而且还会通过HttpModule进行动态处理,并合并和缩小所有CSS。它还使用量化和无损压缩来优化子画面图像,并使用ETags和Expires标头处理生成文件的提供,以确保最佳的浏览器缓存。该设置非常简单,仅涉及一个简单的web.config更改。请参阅我的博客文章,以了解Microsoft Visual Studio和MSDN Samples画廊采用的博客


0

我最近找到了这个工具:SpriteRight http://spriterightapp.com/

SpriteRight是Mac的CSS Spritesheet生成器,可用于导入现有的图像或样式表。使您的网站加载速度更快,降低带宽成本并节省时间。SpriteRight甚至可以即时生成CSS代码。


值得注意的是,这不是免费或开源的应用程序,但价格仅为4.99美元。它的构建良好,并且具有良好的PNG压缩功能,比上述“ Sprite Master Web”具有更多的功能。
t.mikael.d 2012年

而且也只有Mac。
Mahn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.