一种基于内容分发网络的生成动态图片的方法
技术领域
本发明涉及图像处理技术领域,具体涉及一种基于内容分发网络的生成动态图片的方法。
背景技术
CDN(Content Delivery Network,内容分发网络)是一种互联网内容分发技术,把各类内容从数据中心快速的送达到各类终端。图片是CDN上常见的内容,使用图片一方面面临不同终端对尺寸、方向等要求不一致的问题,另一方面面临版权和自身商业诉求等要求的问题,因此,研究CDN上的动态图片处理具有非常重要的意义。
申请公布号为CN 108648253 A(申请号为201810433574.6)的中国发明专利申请公开了一种动态图片的生成方法及装置, 所述方法包括:生成目标向量,并采用预测网络对目标向量进行预测,得到前景动态图片、前景遮罩动态图片及后景静态图片;将前景动态图片和前景遮罩动态图片按帧拆分为至少一帧前景静态图片以及对应的前景遮罩静态图片;将第一帧前景静态图片、第一帧前景遮罩静态图片及后景静态图片输入到长短期记忆网络的第一个胞体中,预测生成动态图片的第一帧画面;将第n帧的前景静态图片、对应的前景遮罩静态图片及动态图片的n-1帧的画面输入到长短期记忆网络的第n个胞体中,预测生成动态图片的第n帧画面。该技术方案能够提高动态图片生成的准确率,但是不适用CDN,无法适应将动态图片从数据中心快速的送达到各类终端。
发明内容
本发明提出了一种基于内容分发网络(CDN)的生成动态图片的方法,能够动态判断CDN上每一个HTTP/HTTPS请求是否需要进行图片处理,能够根据不同的图片处理参数对图片进行图像处理生成新的动态图片。
一种基于内容分发网络(CDN)的生成动态图片的方法,包括以下步骤:
1)原始图片通过URI访问,HTTP/HTTPS请求参数包括URI和UserAgent,在HTTP/HTTPS请求的URI上,提取标记字符(一个)以及图片处理参数;
2)CDN通过检测HTTP/HTTPS请求的URI,判断URI上是否携带标记字符和图片处理参数,决定请求是否要进行图片处理;
3)如果URI上携带标记字符和图片处理参数,需要进行图片处理,CDN用原始图片和图片处理参数请求图片处理服务;
4)根据图片处理服务的请求,图片处理服务器解析CDN传递过来的原始图片和图片处理参数,按照图片处理参数对原始图片进行图像处理,把处理后得到的动态图片返回给CDN;
5)CDN根据HTTP/HTTPS请求的UserAgent 决定是否返回webp(即WebP)格式的图片,如果决定返回webp格式的图片,CDN用步骤4)得到的动态图片结合webp格式的图片的参数请求图片处理服务,得到新的动态图片返回给CDN;如果决定不返回webp格式的图片,则将步骤4)得到的动态图片返回给CDN;
6)如果URI上不携带标记字符,或不携带图片处理参数,或不携带标记字符和图片处理参数,不需要进行原始图片处理,CDN不请求图片处理服务。
步骤5)中,本发明通过HTTP/HTTPS请求的UserAgent(用户代理)判断是否返回webp格式的图片,采用webp格式的图片在保证图片质量的前提下,减少70%的图片大小,提高请求响应速度,并且可以节省带宽成本。现有技术中,动态图片需要有两个URI,加载时容易出现获得的动态图片浏览器不支持,造成无法显示,图片采用JPEG,图片较大加载较慢,容易出现卡顿。本发明中,只有一个URI,不会出现动态图片浏览器不支持的情形,采用自适应的webp格式的图片,在相同图片质量的前提下,图片更小,加载速度更快。
步骤1)中,URI包括原始图片地址、标记字符(一个)和图片处理参数。
标记字符使用URI允许的特殊字符,包括!(感叹号)、-(中划线)、_(下划线),使用时选择其中一个作为标记字符。
图片处理参数使用URI允许的字符,语法是/key/value,key表示参数名称,value表示参数值;图片处理参数允许一个或多个图片处理参数,多个图片处理参数直接连接在一起。
图片处理参数包括图片放大、缩小、裁剪、文字水印、图片水印、旋转、锐化、高斯模糊、边框、画布、格式转换等中的至少一种。
步骤4)中,图片处理服务器解析CDN传递过来的原始图片和图片处理参数,按照图片处理参数对原始图片进行图像处理,具体包括:
检查原始图片和图片处理参数是否合法,如果原始图片不合法,或图片处理参数不合法,或原始图片和图片处理参数不合法,图片处理服务器拒绝执行,把错误返回给CDN;
如果原始图片和图片处理参数合法,图片处理服务器按照图片处理参数对原始图片进行图像处理。
图片处理服务器按照图片处理参数对原始图片进行图像处理,具体包括:
a)图片处理服务器对原始图片进行预处理,为按照图片处理参数处理进行准备,得到初始化的数据结构;预处理包括分配内存、图片加载到内存、图片处理服务初始化
b)获取原始图片的元数据,元数据包括图片大小、图片长宽、exif信息;
c)对原始图片进行解码,得到解码后的图片数据, 存放到步骤a)得到的初始化的数据结构中;
d)根据图片处理参数、步骤b)得到的原始图片的元数据以及步骤c)得到的解码后的图片数据,对原始图片进行旋转、裁剪、缩小或放大、水印、锐化、高斯模糊、质量调整、格式转换等中的至少一种处理,得到处理后的图片;
e)对步骤d)得到的处理后的图片进行编码,生成动态图片。
本发明中,通过先解码,然后处理过程中根据图片处理参数、步骤b)得到的原始图片的元数据以及步骤c)得到的解码后的图片数据,最后进行编码生成动态图片,该方法运行稳定,处理效率高,生成动态图片质量好,在保证图片质量的前提下,能够减少70%的图片大小。
图片处理服务,提供图片放大、缩小、裁剪、文字水印、图片水印、旋转、锐化、高斯模糊、边框、画布、格式转换等几十种图片处理参数,为CDN使用者提供不同要求下对图片加工的能力。
与现有技术相比,本发明具有如下优点:
本发明不需要人工设计同一张图片在多种要求下的多种图片版本,减少人工设计的图片数量,不需要开发设计同类的图片处理服务,提高使用者的设计效率和软件工程效率,提高图片的浏览体验。
附图说明
图1为本发明基于内容分发网络的生成动态图片的方法的流程示意图。
图2为本发明中举例的使用的实际不带标记字符和图片处理参数的动态GIF图片;
图3为本发明中举例的使用的实际带标记字符和图片处理参数的生成动态WebP图片;
图4为本发明中举例的使用的实际调整图片尺对动态GIF图片进行处理;
图5为本发明中举例的使用的实际剪辑图片对动态GIF图片进行处理。
图6为本发明中举例的使用的实际添加图片水印对动态GIF图片进行处理。
图7为本发明中举例的使用的实际自适应WebP对动态GIF图片进行处理前后的大小对比,其中,图7左边为动态GIF图片,图7右边为自适应WebP格式图片。
具体实施方式
如图1所示,本发明基于内容分发网络的生成动态图片的方法,一种基于内容分发网络(CDN)的生成动态图片的方法,包括以下步骤:
如图1所示,本发明基于内容分发网络的生成动态图片的方法,一种基于内容分发网络(CDN)的生成动态图片的方法,包括以下步骤:
1)原始图片通过URI访问,HTTP/HTTPS请求参数包括URI和UserAgent,在HTTP/HTTPS请求的URI上,提取标记字符(一个)以及图片处理参数;
2)CDN通过检测HTTP/HTTPS请求的URI,判断URI上是否携带标记字符和图片处理参数,决定请求是否要进行图片处理;
3)如图3所示,如果URI上携带标记字符和图片处理参数,需要进行图片处理,CDN用原始图片和图片处理参数请求图片处理服务;
4)根据图片处理服务的请求,图片处理服务器解析CDN传递过来的原始图片和图片处理参数,按照图片处理参数对原始图片进行图像处理,把处理后得到的动态图片返回给CDN;
5)CDN根据HTTP/HTTPS请求的UserAgent 决定是否返回webp(即WebP)格式的图片,如果决定返回webp格式的图片,CDN用步骤4)得到的动态图片结合webp格式的图片的参数请求图片处理服务,得到新的动态图片返回给CDN;如果决定不返回webp格式的图片,则将步骤4)得到的动态图片返回给CDN;
6)如图2所示,如果URI上不携带标记字符,或不携带图片处理参数,或不携带标记字符和图片处理参数,不需要进行原始图片处理,CDN不请求图片处理服务。
步骤1)中,如图3所示,URI包括原始图片地址、标记字符(感叹号!)和图片处理参数(format/webp)。
标记字符使用URI允许的特殊字符,包括!(感叹号)、-(中划线)、_(下划线),使用时选择其中一个作为标记字符。
图片处理参数使用URI允许的字符,语法是/key/value,key表示参数名称,value表示参数值;图片处理参数允许一个或多个图片处理参数,多个图片处理参数直接连接在一起。
图片处理参数包括图片放大、缩小(如图4所示)、裁剪(如图5所示、文字水印(如图6所示)、图片水印、旋转、锐化、高斯模糊、边框、画布、格式转换等中的至少一种。
步骤4)中,图片处理服务器解析CDN传递过来的图片和图片处理参数时,检查图片和图片处理参数是否合法,如果图片不合法,或图片处理参数不合法,或图片和图片处理参数不合法,图片处理服务器拒绝执行,把错误返回给CDN;如果图片和图片处理参数合法,图片处理服务按照参数对图片执行图像处理。
图片处理服务按照参数对图片执行图像处理,具体包括:
a)图片处理服务器对原始图片进行预处理,为按照图片处理参数处理进行准备,得到初始化的数据结构;预处理包括分配内存、图片加载到内存、图片处理服务初始化;
b)获取原始图片的元数据,元数据包括图片大小、图片长宽、exif信息;
c)对原始图片进行解码,得到解码后的图片数据,存放到步骤a)得到的初始化的数据结构中;
d)根据图片处理参数、步骤b)得到的原始图片的元数据以及步骤c)得到的解码后的图片数据,对原始图片进行旋转、裁剪、缩小或放大、水印、锐化、高斯模糊、质量调整、格式转换等中的至少一种处理,得到处理后的图片;
e)对步骤d)得到的处理后的图片进行编码,生成动态图片。
如图7所示,本发明中,通过先解码,然后处理过程中根据图片处理参数、步骤b)得到的原始图片的元数据以及步骤c)得到的解码后的图片数据,最后进行编码生成动态图片,该方法运行稳定,处理效率高,生成动态图片质量好,在保证图片质量的前提下,能够减少70%的图片大小。
图片处理服务,提供图片放大、缩小(如图4所示)、裁剪(如图5所示、文字水印(如图6所示)、图片水印、旋转、锐化、高斯模糊、边框、画布、格式转换等几十种图片处理参数,为CDN使用者提供不同要求下对图片加工的能力。
如图7所示,步骤5)中,本发明通过HTTP/HTTPS请求的UserAgent(用户代理)判断是否返回webp格式的图片,采用webp格式的图片在保证图片质量的前提下,减少70%的图片大小,提高请求响应速度,并且可以节省带宽成本。现有技术中,动态图片需要有两个URI,加载时容易出现获得的动态图片浏览器不支持,造成无法显示,图片采用JPEG,图片较大加载较慢,容易出现卡顿。本发明中,只有一个URI,不会出现动态图片浏览器不支持的情形,采用自适应的webp格式的图片,在相同图片质量的前提下,图片更小,加载速度更快。