一种基于访问的展示图片生成方法和装置与流程

文档序号:11996266阅读:184来源:国知局
一种基于访问的展示图片生成方法和装置与流程
一种基于访问的展示图片生成方法和装置【技术领域】本发明涉及计算机应用技术领域,特别涉及一种基于访问的展示图片生成方法和装置。

背景技术:
为了满足对图片的不同展示需求,例如在社区应用中各种尺寸图片、打水印图片的展示需求或者用户终端应用程序对缩略图的展示需求等等,常常需要基于原始图片生成缩略图、压缩图或者打水印图,以供满足不同的图片访问需求。现有实现方式中,除了将原始图片上传至图片服务器的存储系统之外,还需要预先生成缩略图、压缩图或者打水印图,在本发明中将这些图片成为展示图片,将生成的展示图片也上传至存储系统。待图片服务器接收到图片访问请求后,直接将存储系统中对应的展示图片进行返回。然而,该实现方式具备以下缺点:1)图片上传时间较长。除了原始图片的上传之外,还需要额外进行动态缩放、压缩或者打水印等操作以生成展示图片并上传展示图片。以爱乐活社区为例,对于同一张图片生成的展示图片可能存在二十种之多,需要耗时1到2s,再加上图片上传的耗时,这种等待是不可接受的。2)浪费存储空间。由于展示图片是预先生成的,为了满足各种图片尺寸以及不同水印的需求,需预先生成多种展示图片放在存储系统中,但事实上并非每一种展示图片都能够被访问到,无形之中浪费了宝贵的存储空间。同样以爱乐活社区为例,如果一张图片比较火,可能被展示在各种地方,那么其对应的二十多种展示图片可能都需要,但如果一张图片受欢迎程度一般,那么其可能仅由几种展示图片被访问,那么对应的其他十几种展示图片则浪费了存储空间。3)访问需求不灵活。假设已经预先生成并上传了二十多种展示图片,如果有额外类型展示图片的访问需求,例如需要一种新尺寸的缩略图,则当前存储系统中则无法获取到对应的展示图片,此时对所有的原始图片生成这种新的展示图片,然后上传新的展示图片至图片服务器的存储系统。

技术实现要素:
本发明提供了一种基于访问的展示图片生成方法和装置,以便于减少图片上传时间,节约存储空间以及使图片访问更加灵活。具体技术方案如下:S1、判断展示图片存储引擎中是否存在接收到的展示图片访问请求的URL对应的展示图片,如果是,返回所述URL对应的展示图片;否则执行步骤S2;S2、解析所述URL获取原始图片ID和展示参数,所述展示参数包括水印参数、缩放参数和压缩参数中的至少一种;S3、从原始图片存储引擎获取原始图片ID对应的原始图片,依据所述展示参数对原始图片进行相应的打水印、缩放和压缩中的至少一种处理,生成展示图片;S4、将所述URL对应生成的展示图片存至所述展示图片存储引擎中,并返回所述生成的展示图片。根据本发明一优选实施例,在所述步骤S1之前还包括:S01、接收图片访问请求的URL;S02、如果所述URL是展示图片访问请求的URL,则继续执行所述步骤S1,如果是原始图片访问请求的URL,则执行步骤S03;S03、解析所述URL获取原始图片ID,返回原始图片存储引擎中所述原始图片ID对应的原始图片。根据本发明一优选实施例,在返回原始图片存储引擎中所述原始图片ID对应的原始图片之前还包括:判断原始图片存储引擎中是否查找到所述原始图片ID对应的原始图片,如果是,继续执行所述返回原始图片存储引擎中所述原始图片ID对应的原始图片,结束流程;否则,返回要访问的图片不存在的提示,结束流程。根据本发明一优选实施例,在所述步骤S02之前还包括:判断所述URL是否符合预设的格式要求,如果是,继续执行所述步骤S02,否则返回要访问的图片不存在的提示,结束流程。根据本发明一优选实施例,在所述步骤S02中如果所述URL中仅携带原始图片ID,则确定所述URL为原始图片访问请求的URL;如果所述URL中不仅携带原始图片ID还携带展示参数,则确定所述URL为展示图片访问请求的URL。根据本发明一优选实施例,在步骤S2中解析所述URL获取原始图片ID和展示参数时,判断所述URL是否进行了加密,如果是,则对所述URL进行解密得到所述原始图片ID和展示参数;如果解密失败,则确定所述URL为伪造的请求。根据本发明一优选实施例,对所述URL进行解密得到所述原始图片ID和展示参数具体包括:如果所述URL中包含的水印图片ID字段为空,则对原始图片ID的密文进行解密得到原始图片ID的明文;如果所述URL中包含的水印图片ID字段不为空,则对水印图片ID的密文进行解密得到水印图片ID的明文,将水印图片ID的明文和URL中包含的其他展示参数一起作为密钥对原始图片ID的密文进行解密,得到原始图片ID的明文。根据本发明一优选实施例,在所述步骤S3之前还包括:判断解析得到的展示参数是否在白名单规定的可使用展示参数范围内,如果是,继续执行所述步骤S3;否则,确定所述URL为恶意攻击,结束流程。根据本发明一优选实施例,该方法还包括:接收到上传的原始图片时,针对该上传的原始图片生成原始图片ID,判断原始图片存储引擎中是否已经存在该原始图片ID,如果是,则不存储该上传的原始图片;否则,将该上传的原始图片以及原始图片ID存储在所述原始图片存储引擎中。根据本发明一优选实施例,所述针对该上传的原始图片生成原始图片ID具体包括:对原始图片进行信息摘要算法MD5,得到一个128位的串;将所述128位的串切分为两个64位的串str1和str2;将str1和str2做异或处理,得到串str3;将str3的结果去掉首位,得到63位的正整数作为原始图片ID。一种基于访问的展示图片生成装置,该装置包括:展示图片判断单元,用于判断展示图片存储引擎中是否存在交互单元接收到的展示图片访问请求的URL对应的展示图片,如果是,将所述URL对应的展示图片发送给交互单元,否则触发参数解析单元;参数解析单元,用于受到所述展示图片判断单元的触发后,解析所述URL获取原始图片ID和展示参数,所述展示参数包括水印参数、缩放参数和压缩参数中的至少一种;图片生成单元,用于从原始图片存储引擎获取所述原始图片ID对应的原始图片,依据所述展示参数对原始图片进行相应的打水印、缩放和压缩中的至少一种处理,生成展示图片;图片保存单元,用于将所述URL对应生成的展示图片存至所述展示图片存储引擎;交互单元,用于接收展示图片请求的URL,返回所述展示图片判断单元发送的展示图片,返回所述图片生成单元生成的展示图片。根据本发明一优选实施例,该装置还包括:请求判断单元;所述交互单元接收到图片访问请求的URL后,将所述URL提供给所述请求判断单元;所述请求判断单元,用于判断出所述URL是展示图片访问请求的URL时,将所述URL发送给所述展示图片判断单元;判断出所述URL是原始图片访问请求的URL时,触发所述参数解析单元;所述参数解析单元,还用于受到所述请求判断单元的触发后,解析所述URL获取原始图片ID,将原始图片存储引擎中所述原始图片ID对应的原始图片发送给所述交互单元;所述交互单元,还用于返回所述原始图片ID对应的原始图片。根据本发明一优选实施例,所述参数解析单元,还用于判断原始图片存储引擎中是否查找到所述原始图片ID对应的原始图片,如果是,将所述原始图片ID对应的原始图片发送给所述交互单元;否则,触发所述交互单元返回要访问的图片不存在的提示。根据本发明一优选实施例,所述交互单元在接收到图片访问请求的URL后,还用于判断所述URL是否符合预设的格式要求,如果是,将所述URL提供给所述请求判断单元;否则返回要访问的图片不存在的提示。根据本发明一优选实施例,如果所述URL中仅携带原始图片ID,则所述请求判断单元确定所述URL为原始图片访问请求的URL;如果所述URL中不仅携带原始图片ID还携带展示参数,则所述请求判断单元确定所述URL为展示图片访问请求的URL。根据本发明一优选实施例,所述参数解析单元在解析所述URL获取原始图片ID和展示参数时,判断所述URL是否进行了加密,如果是,则对所述URL进行解密得到所述原始图片ID和展示参数;如果解密失败,则确定所述URL为伪造的请求。根据本发明一优选实施例,所述参数解析单元在对所述URL进行解密时,如果所述URL中包含的水印图片ID字段为空,则对原始图片ID的密文进行解密得到原始图片ID的明文;如果所述URL中包含的水印图片ID字段不为空,则对水印图片ID的密文进行解密得到水印图片ID的明文,将水印图片ID的明文和URL中包含的其他展示参数一起作为密钥对原始图片ID的密文进行解密,得到原始图片ID的明文。根据本发明一优选实施例,所述图片生成单元,还用于判断所述参数解析单元解析得到的展示参数是否在白名单规定的可使用展示参数范围内,如果是,执行所述从原始图片存储引擎获取所述原始图片ID对应的原始图片的操作,否则,确定所述URL为恶意攻击。根据本发明一优选实施例,所述交互单元,还用于接收上传的原始图片;所述图片保存单元,还用于针对该上传的原始图片生成原始图片ID,判断原始图片存储引擎中是否已经存在该原始图片ID,如果是,则不存储该上传的原始图片;否则,将该上传的原始图片以及原始图片ID存储在所述原始图片存储引擎中。根据本发明一优选实施例,所述图片保存单元在针对该上传的原始图片生成原始图片ID时具体执行:对原始图片进行信息摘要算法MD5,得到一个128位的串;将所述128位的串切分为两个64位的串str1和str2;将str1和str2做异或处理,得到串str3;将str3的结果去掉首位,得到63位的正整数作为原始图片ID。由以上技术方案可以看出,本发明提供了一种基于访问的展示图片生成方式,即在接收到展示图片访问请求的URL时,如果展示图片存储引擎中尚没有该URL请求的展示图片,则对该URL进行解析获取原始图片ID和展示参数后生成展示图片,并将URL和对应的展示图片存入展示图片存储引擎中供下次该URL能够直接访问到展示图片。通过该方法除了上传原始图片之外,无需额外进行展示图片的上传,而是在图片服务器本地基于访问生成展示图片,显然减少了图片上传时间;另外,对于没有访问需求的展示图片则不会被生成且存入展示图片存储引擎,节约了存储空间;同时这种基于访问生成展示图片的方式也使得访问需求更加灵活。【附图说明】图1为本发明实施例一提供的基于访问的展示图片生成方法流程图;图2为本发明实施例一提供的图片访问请求的URL中type字段的位图;图3为本发明实施例二提供的基于访问的展示图片生成装置结构图。【具体实施方式】为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。实施例一、图1为本发明实施例一提供的基于访问的展示图片生成方法流程图,该方法由图片服务器侧执行,如图1所示,该方法具体包括:步骤101:接收图片访问请求的URL。该图片请求的URL可能是原始图片请求的URL,也可能是展示图片请求的URL。其中对于原始图片请求的URL包含原始图片ID,其组成可以采用诸如“Original_URL=imageid”这样的格式,其中imageid是一个63位长整型数据。该原始图片请求的URL可以采用但不限于如下步骤S11-步骤S14实现:步骤S11、对原始图片进行信息摘要算法(MD5),得到一个128位的串;步骤S12、将MD5的结果切分为两个64位的串str1和str2;步骤S13、将str1和str2做异或处理,得到串str3;步骤S14、将str3的结果去掉首位,得到该63位的正整数。采用上述方式可以使得相同的原始图片具有唯一的imageid,当多次上传同一个原始图片时,当通过上述方式计算出的imageid如果已经存在于原始图片存储引擎中,则说明该原始图片已经存在于原始图片存储引擎中,则不必重复上传和存储。对于展示图片请求的URL则包含原始图片ID和展示参数,其中展示参数包含水印参数、缩放参数和压缩参数中的至少一种。其中水印参数包括水印ID,还可以包括水印类型(即文字水印、图片水印或者将文字生成图片后打水印)或者水印位置(即将水印打在原始图片的哪个位置)等。缩放参数包括缩放尺寸(即缩放后图片的高和宽),还可以包括缩放策略(例如等比例缩放、缩放宽、缩放高等)或者剪切策略(剪切原始图片的哪个位置)等。压缩参数包括压缩比等。另外,该展示图片请求的URL可以采用诸如“PresentImage_URL=imageid-[watermarkid]-[width]-[height]-[type]”的格式。其中watermarkid为水印ID,即用来打水印的图片或文字ID,width和height是缩放参数,分别为缩放后图片的宽和高,type为类型字段,可以用于携带压缩参数,或者其他水印参数和缩放参数。除此之外,为了提高安全性,该展示图片请求的URL也可以采用诸如“PresentImage_URL=imageid'-[watermarkid']-[width]-[height]-[type]”的格式。其中imageid'和watermarkid'分别为加密后的原始图片ID和水印ID。生成该URL时,如果watermarkid'字段为空,则对imageid直接加密得到imageid';如果watermarkid'字段不为空,则对watermarkid加密得到watermarkid',然后将watermarkid'以及width、height和type中的至少一种作为密钥,对imageid进行加密得到imageid'。下面对type字段中包含的内容提供一种优选实例,如图2所示,该type字段的实现可以使用位图的方式,前6位携带缩放参数,7-12位携带水印参数,13-18位携带压缩参数,18位以上可以是扩展字段,用于后续扩展使用。在前6位携带的缩放参数中,1-2位用于标识缩放策略,例如可以包含四种:00表示等比例缩放,01表示缩放宽,即对高进行剪切,10表示缩放高,即对宽进行剪切,11表示对宽和高都进行剪切。3-4位标识剪切策略,例如包含三种:01表示截取图像的左上部分,10表示截取图像的中间部分,11表示截取图像的右下部分。在7-12位携带的水印参数中,1-2位用于标识水印的类型,例如可以包含三种:00表示文字水印,01表示图片水印,10表示将文字先生成图片然后打水印。3-6位用于标识水印位置,即将水印打在原始图片的哪个位置,水印位置是一个九宫格,例如分别采用0001-1001表示左上部,中上部,右上部,左中部,中部,右中部,左下部,中下部,右下部的水印位置。在13-18位携带的压缩参数中,可以只占用4个位段,例如从0001-1010代表的1-10之间的10个数,分别表示10%-100%的压缩比。上述格式中如果不包含哪种参数,其对应字段可以为空,例如watermarkid或watermarkid'字段为空,则表示不需要对原始图片进行打水印的处理。如果除了包含原始图片ID的字段之外,其他字段均为空,则说明该URL为原始图片请求的URL。上述URL可以是预先生成并由图片服务器推送给客户端或浏览器,并在客户端或浏览器展示给用户,用户要进行图片访问而点选某个URL后,客户端或浏览器就会将该URL发送给图片服务器。也可以是其他的实现方式,例如,客户端或浏览器为用户提供原始图片和展示参数的可选项,当用户点选这些可选项后会自动生成URL并发送给图片服务器。步骤102:判断接收到的URL是否符合预设的格式要求,如果是,继续执行步骤103;否则,返回要访问的图片不存在的提示,结束流程。该预设的格式要求可以采用上述的几种格式,诸如“PresentImage_URL=imageid-[watermarkid]-[width]-[height]-[type]”、“PresentImage_URL=imageid'-[watermarkid']-[width]-[height]-[type]”或者,“Original_URL=imageid”等,然后采用正则匹配的方式判断是否能够匹配上,例如判断是否能正则匹配得上如下的正则式[0-9a-z]{24}-[0-9a-z]{0,24}-[0-9]{0,5}-[0-9]{0,5}-[0-9]*或者[0-9a-z]{24},如果是,则执行步骤103;否则认为不是合法的访问请求,因此向用户返回要访问的图片不存在的提示。需要说明的是,本步骤是为了提高解析效率,避免后续对URL进行解析失败而提前执行的格式要求判断,是可选步骤。步骤103:判断接收到的URL访问原始图片还是访问展示图片,如果访问原始图片,则执行步骤104;如果访问展示图片,则执行步骤106。本步骤可以通过判断URL中是否包含除原始图片ID之外的其他参数,如果否,例如是“Original_URL=imageid”格式,或者虽然是“PresentImage_URL=imageid-[watermarkid]-[width]-[height]-[type]”和“PresentImage_URL=imageid'-[watermarkid']-[width]-[height]-[type]”格式,但除了imageid或imageid'字段之外的其他字段都为空,则确定接收到的URL访问原始图片;否则认为访问展示图片。步骤104:解析URL获取原始图片ID。从imageid字段中获取原始图片ID。步骤105:判断原始图片存储引擎中是否查找得到该原始图片ID对应的原始图片,如果是,将该原始图片进行返回,结束流程;否则,返回要访问的图片不存在的提示,结束流程。需要说明的是,在该实施例中也可以不执行上述步骤103-105,默认系统仅提供对展示图片进行访问,认为所有的URL均为展示图片访问请求,而直接执行步骤106。步骤106:判断展示图片存储引擎中是否存在该URL对应的展示图片,如果是,返回该URL对应的展示图片;否则执行步骤107。根据后续步骤的描述可知,在基于访问生成展示图片后会在展示图片存储引擎中存储URL与展示图片之间的对应关系,如果本次访问中经查询展示图片存储引擎发现已经存在该URL对应的展示图片,则无需重复进行展示图片的生成,直接向用户返回对应的展示图片即可。步骤107:解析URL获取原始图片ID和展示参数。如果该URL是展示图片访问请求,则该URL的格式是“PresentImage_URL=imageid-[watermarkid]-[width]-[height]-[type]”或者“PresentImage_URL=imageid'-[watermarkid']-[width]-[height]-[type]”。如果是“PresentImage_URL=imageid-[watermarkid]-[width]-[height]-[type]”,则说明是未加密的,从imageid字段中获取原始图片ID,从watermarkid字段中获取水印ID,从width和height字段中获取缩放参数的宽和高,从type字段中获取压缩参数或者其他水印参数、缩放参数。如果“PresentImage_URL=imageid'-[watermarkid']-[width]-[height]-[type]”格式,则需要进行解密,如果watermarkid'为空,则直接对imageid'进行解密得到imageid的明文。如果watermarkid'不为空,则对水印ID进行解密后,得到水印ID的明文,然后将水印ID的明文和其他参数一起作为密钥对imageid'进行解密,得到原始图片ID的明文。如果解密失败,则认为该URL是伪造的请求。步骤108:从原始图片存储引擎获取原始图片ID对应的原始图片,如果URL中存在水印参数,则根据水印参数中的水印ID从水印图片存储引擎中获取对应的水印图片。步骤109:依据展示参数对原始图片进行相应的打水印、缩放和压缩中的至少一种处理,生成展示图片。如果URL中包含水印参数,则需要进行打水印处理,利用水印图片对原始图片进行打水印,如果还包含其他水印参数,例如水印类型或水印位置,则在打水印时进一步结合其他水印参数,例如将水印图片打在原始图片上对应的水印位置,得到展示图片。如果URL中包含缩放参数,则需要进行缩放处理,例如依据缩放后图片的宽和高,对原始图片或者打水印之后的图片(这种情况对应于同时包含水印参数和缩放参数时)进行缩放,还可以进一步结合其他缩放参数,例如缩放策略、剪切策略等,最终得到展示图片。如果URL中包含压缩参数,则需要进行压缩处理,例如依据压缩参数中的压缩比对原始图片或者打水印之后的图片或者缩放之后的图片进行压缩,得到展示图片。如果同时包含水印参数、缩放参数和压缩参数中的至少两种,则依据预设的处理策略,依次进行不同的处理。例如预先设置的处理策略可以是先打水印,再缩放,然后进行压缩。步骤110:将URL对应生成的展示图片存至展示图片存储引擎中,并返回生成的展示图片。另外,对于展示图片而言,生成这样的图片服务器是需要开销的,为了防止恶意攻击,可以针对展示参数配置白名单,该白名单中可以限制可使用的展示参数范围。在步骤108之前可以首先判断解析得到的展示参数是否在白名单中,即是否在可使用的展示参数范围内,如果是,则认为是合法的URL,继续执行步骤108;否则认为是恶意攻击,拒绝该图片访问请求,结束流程。例如,可以在白名单中设置图片压缩后的宽和高的范围,只有在该范围内的才是合法的,避免恶意用户制造大量具有不同图片缩放后宽和高参数的图片访问请求,短时间内对服务器进行攻击,从而造成服务器瘫痪。以上是对本发明所提供的方法进行的详细描述,下面结合实施例二对本发明提供的装置进行详细描述。实施例二、图3为本发明实施例二提供的基于访问的展示图片生成装置,该装置可以设置于图片服务器侧,如图3所示,该装置包括:交互单元300、展示图片判断单元301、参数解析单元302、图片生成单元303和图片保存单元304。交互单元300接收展示图片访问请求的URL。展示图片判断单元301判断展示图片存储引擎中是否存在交互单元300接收到的展示图片访问请求的URL对应的展示图片,如果是,将URL对应的展示图片发送给交互单元300,由交互单元300返回展示图片判断单元301发送的展示图片,否则触发参数解析单元302。参数解析单元302受到展示图片判断单元301的触发后,解析URL获取原始图片ID和展示参数,展示参数包括水印参数、缩放参数和压缩参数中的至少一种。其中参数解析单元302在解析URL获取原始图片ID和展示参数时,可以首先判断URL是否进行了加密,如果是,则对URL进行解密得到原始图片ID和展示参数;如果解密失败,则确定URL为伪造的请求。具体地在对URL进行解密时,如果URL中包含的水印图片ID字段为空,则对原始图片ID的密文进行解密得到原始图片ID的明文;如果URL中包含的水印图片ID字段不为空,则对水印图片ID的密文进行解密得到水印图片ID的明文,将水印图片ID的明文和URL中包含的其他展示参数一起作为密钥对原始图片ID的密文进行解密,得到原始图片ID的明文。图片生成单元303从原始图片存储引擎获取原始图片ID对应的原始图片,依据展示参数对原始图片进行相应的打水印、缩放和压缩中的至少一种处理,生成展示图片。如果URL中解析出水印图片ID,则图片生成单元303还用于从水印图片存储引擎中获取水印图片ID对应的水印图片,该情况图3中未示出。具体地,如果URL中包含水印参数,则需要进行打水印处理,利用水印图片对原始图片进行打水印,如果还包含其他水印参数,例如水印类型或水印位置,则在打水印时进一步结合其他水印参数,例如将水印图片打在原始图片上对应的水印位置,得到展示图片。如果URL中包含缩放参数,则需要进行缩放处理,例如依据缩放后图片的宽和高,对原始图片或者打水印之后的图片(这种情况对应于同时包含水印参数和缩放参数时)进行缩放,还可以进一步结合其他缩放参数,例如缩放策略、剪切策略等,最终得到展示图片。如果URL中包含压缩参数,则需要进行压缩处理,例如依据压缩参数中的压缩比对原始图片或者打水印之后的图片或者缩放之后的图片进行压缩,得到展示图片。如果同时包含水印参数、缩放参数和压缩参数中的至少两种,则依据预设的处理策略,依次进行不同的处理。例如预先设置的处理策略可以是先打水印,再缩放,然后进行压缩。图片保存单元304将该URL对应生成的展示图片存至展示图片存储引擎中。然后交互单元300返回图片生成单元304生成的展示图片。上述描述的是如果接收到的URL就是展示图片访问请求的情况,还有一些情况是对用户发送的图片访问请求并没有进行限定,其有可能是原始图片访问请求,也可能是展示图片访问请求,此时,该装置还可以包括:请求判断单元305。交互单元300接收到图片访问请求的URL后,先将URL提供给请求判断单元305。请求判断单元305判断出该URL是展示图片访问请求的URL时将该URL发送给展示图片判断单元301;判断出该URL是原始图片访问请求的URL时,触发参数解析单元302。具体地,如果URL中仅携带原始图片ID,则请求判断单元305确定URL为原始图片访问请求的URL;如果URL中不仅携带原始图片ID还携带展示参数,则请求判断单元305确定URL为展示图片访问请求的URL。此时的参数解析单元302受到请求判断单元305的触发后,解析URL获取原始图片ID,将原始图片存储引擎中原始图片ID对应的原始图片发送给交互单元300。交互单元300返回原始图片ID对应的原始图片给用户。由于可能会存在原始图片存储引擎中无法查找到原始图片ID对应的原始图片,优选地,参数解析单元302还可以用于判断原始图片存储引擎中是否查找到原始图片ID对应的原始图片,如果是,将原始图片ID对应的原始图片发送给交互单元300;否则,触发交互单元300返回要访问的图片不存在的提示。为了提高效率,交互单元300在接收到图片访问请求的URL后,可以首先判断URL是否符合预设的格式要求,如果是,将URL提供给请求判断单元305;否则直接返回要访问的图片不存在的提示。另外,对于展示图片而言,生成这样的图片服务器是需要开销的,为了防止恶意攻击造成图片服务器瘫痪,图片生成单元303可以判断参数解析单元302解析得到的展示参数是否在白名单规定的可使用展示参数范围内,如果是,执行从原始图片存储引擎获取原始图片ID对应的原始图片的操作,否则,确定URL为恶意攻击。由于原始图片存储引擎中的原始图片可以由用户上传得来,因此交互单元300,还用于接收上传的原始图片。图片保存单元304针对该上传的原始图片生成原始图片ID,首先判断原始图片存储引擎中是否已经存在该原始图片ID,如果是,则不存储该上传的原始图片;否则,将该上传的原始图片以及原始图片ID存储在原始图片存储引擎中。其中图片保存单元304在针对该上传的原始图片生成原始图片ID时需要保证相同的原始图片生成的原始图片ID是唯一的,因此可以采用但不限于以下方式:对原始图片进行信息摘要算法MD5,得到一个128位的串;将128位的串切分为两个64位的串str1和str2;将str1和str2做异或处理,得到串str3;将str3的结果去掉首位,得到63位的正整数作为原始图片ID。该装置中的上述交互单元300、请求判断单元305、参数解析单元302和图片生成单元303属于逻辑层(LOGICLAYER),主要负责URL的解析和展示图片的生成;展示图片判断单元301和图片保存单元304属于存储访问层(STOREACCESSLAYER),负责对存储层的访问;原始图片存储引擎、展示图片存储引擎属于存储层(STORELAYER)以及图3中未示出的水印图片存储引擎,负责图片数据的存储。由以上描述可以看出,本发明提供的方法和装置具备以下优点:1)本发明除了上传原始图片之外,无需额外进行展示图片的上传,而是在图片服务器本地基于访问生成展示图片,显然减少了图片上传时间。2)本发明这种基于访问的展示图片生成方式对于没有访问需求的展示图片,则不会被生成且存入展示图片存储引擎,相比较现有技术中预先将几十种展示图片上传并存入展示图片存储引擎中的方式,节约了存储空间。3)本发明根据URL中实际携带的原始图片ID和展示参数动态生成展示图片,可以灵活地满足不同的访问需求。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1