Web优化之雪碧图—动态生成雪碧图 读凡客产品页所想

本文探讨了凡客诚品产品页中动态生成雪碧图的技术,提出通过joinimages.ashx动态生成雪碧图,但建议结合生成相应样式以优化HTML。文章介绍了一种生成雪碧图的方法,即合并多个图片到一个Bitmap,并提供了实现工具SpriteImageCreate的截图。最终,文章展示了如何在HTML中引用动态生成的雪碧图样式,强调使用class而非直接定位以提高可维护性。
摘要由CSDN通过智能技术生成

最近访问凡客诚品产品页留意了一下,这个页面的一些图动态做成了雪碧图,如:

从这张图片我们可以看到.SpriteWashings这个样式的背景图是通过joinimages.ashx动态生成,这个想法很好,但是没有生成样式。所以它的html使用了style="background-position: 0px -80px"这个来定位,个人认为这种方式不好,应该通过添加class 来定位,这就需要生成雪碧图的时候要生成相应的样式。

生成雪碧图的原理很简单:根据多个图片地址生成对应的Bitmap,在把这些Bitmap画到一个Bitmap上。

其核心代码如下:

    private static bool GenerateSprite(ImageSettings settings, int x, int y, List<Bitmap> images, StringBuilder cssCompatOutput)
        {
            if (settings.TileInYAxis)
            {
                y += images.Count;
            }
            else
            {
                x += images.Count;
            }

            using (Bitmap sprite = new Bitmap(x, y))
            {
                using (Graphics drawingSurface = Graphics.FromImage(sprite))
                {

                    drawingSurface.Clear(settings.BackgroundColor);

                    int xOffset = 0;
                    int yOffset = 0;
                    foreach (Bitmap image in images)
                    {
                        drawingSurface.DrawImage(image, new Rectangle(xOffset, yOffset, image.Width, image.Height));
                        if (image.Tag != null)
                            Gener
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值