一种图片传输方法、装置及存储介质与流程

文档序号:18811365发布日期:2019-10-08 23:14阅读:155来源:国知局
一种图片传输方法、装置及存储介质与流程

本说明书实施例涉及计算机技术领域,特别涉及一种图片传输方法、装置及存储介质。



背景技术:

随着网络通信以及智能设备的发展,用户在使用手机、ipad等移动终端之间、移动终端与计算机设备、计算机设备之间往往需要进行图片的发送和接收,设备之间进行图片的发送和接收通常可以通过有线传输,如通过连接数据线进行传输,但当设备之间距离较远或者没有数据线的情况下则可以进行无线传输,如蓝牙传输,无线网络传输。

然而,因地域网络原因,设备配置原因等,往往会使图片传输过程出现延迟大的问题。设备性能强的,网络差导致传输时间过长甚至造成网络超时;网络条件好的,但是设备性能差导致传输时间过长。



技术实现要素:

本说明书实施例的目的是提供一种图片传输方法、装置及存储介质,以降低图片传输过程中的延迟。

为解决上述问题,本说明书实施例提供一种图片传输方法、装置及存储介质是这样实现的。

一种图片传输方法,所述方法包括:获取待传输图片,并确定当前网络带宽;根据客户端的性能信息,计算出所述客户端cpu的实时算力;根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;根据所述图片压缩率将待传输图片压缩并传输至客户端。

一种图片传输装置,所述装置包括:第一确定模块,用于获取待传输图片,并确定当前网络带宽;计算模块,用于根据客户端的性能信息,计算出所述客户端cpu的实时算力;第二确定模块,用于根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;传输模块,用于根据所述图片压缩率将待传输图片压缩并传输至客户端。

一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现:获取待传输图片,并确定当前网络带宽;根据客户端的性能信息,计算出所述客户端cpu的实时算力;根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;根据所述图片压缩率将待传输图片压缩并传输至客户端。

由以上本说明书实施例提供的技术方案可见,本说明书实施例提供的图片传输方法,可以通过获取待传输图片,并确定当前网络带宽;根据客户端的性能信息,计算出所述客户端cpu的实时算力;根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;根据所述图片压缩率将待传输图片压缩并传输至客户端。本说明书实施例可以在不改变现有硬件条件下,通过实时采集资源信息、动态完成压缩比计算,实现图片压缩,来对整个图像处理及传输过程进行优化,极大地降低了图片信息传输过程中的网络负载,并充分利用cpu计算能力,降低传输过程的时效,避免请求超时发生。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书实施例一种图片传输方法的流程图;

图2为本说明书实施例一种图片传输方法业务场景的示意图;

图3为本说明书实施例一种图片传输方法业务场景的流程图;

图4为本说明书实施例一种图片传输服务器的结构组成示意图;

图5为本说明书实施例一种图片传输装置的功能模块图。

具体实施方式

下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

在本实施方式中,执行所述图片传输方法的主体可以是具有逻辑运算功能的电子设备,所述电子设备可以是服务器或客户端,所述客户端可以为台式电脑、平板电脑、笔记本电脑、智能手机、工作站等。当然,客户端并不限于上述具有一定实体的电子设备,其还可以为运行于上述电子设备中的软体。还可以是一种通过程序开发形成的程序软件,该程序软件可以运行于上述电子设备中。

现有的图片传输方法中,因地域网络原因,设备配置原因等,往往会使图片传输过程出现延迟大的问题。设备性能强的,网络差导致传输时间过长甚至造成网络超时;网络条件好的,但是设备性能差导致传输时间过长。如果充分利用设备cpu算力和网络带宽等情况,并采用一种动态算法来平衡cpu算力和网络传输,从而确定图片传输的图片压缩率来进行图片传输,来降低传输过程的时效,避免请求超时发生。

为此,本说明书实施例提供了一种图片传输方法,如图1所示,所述方法可以包括以下步骤:

s110:获取待传输图片,并确定当前网络带宽。

在一些实施例中,服务器的数据库中可以存储图片,用户可以选择数据库中存储的图片进行传输,服务器将用户选择的图片作为待传输图片;所述带传输图片还可以是用户通过客户端上传至服务器的图片,用户可以在上传图片后可以指定图片的传输地址,服务器可以获取用户上传的图片作为待传输图片;服务器还可以根据其他任意方式获取待传输图片,本说明书实施例对此不作限定。

上述网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,在图片进行网络传输的过程中,根据网络带宽可以估算出图片传输的速度。在一些实施例中,网络带宽可以根据以下步骤来确定。

步骤1:将测试图片发送至客户端,并记录每帧图像的发送时间;

步骤2:接收客户端反馈的应答信息,并记录接收时间;

步骤3:根据所述发送时间与接收时间确定当前网络带宽。

服务器在进行图片传输之前,可以向客户端发送用于测试网络情况的图片,并以直接记录发送时间的方式记录每帧图像和其发送时间。由于客户端按发送顺序接收数据,因此在客户端端的接收事件触发时,会向服务器发送一个应答信息,当服务器接收到客户端发送的应答信息后,记录当前接收时间,并使用公式(1)得到数据传输往返时间,以及通过公式(2)计算得到当前网络带宽。

rtt=t2-t1(1)

rtts=(1-α)×rttp+α×rtt(2)

其中,t1为当前帧的发送时间,t2为接收时间,rtt为当前帧的往返时延,rttp为已发送帧的平均时延,α为所述当前帧的往返时延与所述已发送帧的平均时延的权重系数,rtts为当前网络带宽。

在上述公式(2)中,α为所述当前帧的往返时延与所述已发送帧的平均时延的权重系数,该值用于判断网络拥塞程度,通过α控制rtt和rttp的比重,来决定图片传输的速度,如果rtt和rttp的值更接近,表示网络拥塞程度的判断主要以当前顿的往返时延为准;如果α值更接近1,表示拥塞程度的判断主要以当前帧的往返时延为准;如果α值更接近0,表示网络拥塞程度的判断主要以已发送帧的平均时延为准。由于网络拥塞经常是突发性的,单帧的当前帧的往返时延不足以代表整个传输的拥塞程度。并且公式(2)计算得到的当前网络带宽用于控制数据发送速率,在发送速率下降后,当前帧的往返时延自然会上升,如果α值过大,容易造成当前网络带宽波动幅度较大,无法达到稳定控制发送速率的效果。因此要获当前网络带宽的一个较为稳定的值。

s120:根据客户端的性能信息,计算出所述客户端cpu的实时算力。

算力也称哈希率,是比特币网络处理能力的度量单位,即为cpu计算哈希函数输出的速度,算力为大数据的发展提供坚实的基础保障,大数据的爆发式增长,给现有算力提出了巨大挑战。在图片传输过程中,接收端的cpu算力不同,对图片的接收以及处理的时间也不同,在网络状况相同的情况下,接收端的cpu算力越大,则对图片的接收以及处理的时间也越快。因此,在本说明书实施例中,需要计算出客户端cpu的实时算力。

在一些实施例中,可以根据客户端的性能信息,如客户端cpu频率、cpu内核数量、当前cpu使用占比来计算出客户端cpu的实时算力。具体的,客户端cpu的实时算力可以根据以下公式计算得到:

power=f×a×(1-p)(3)

其中,power为所述客户端cpu的实时算力,f为所述cpu频率,a为所述cpu内核数量,p为所述当前cpu使用占比。

在一些实施例中,客户端可以获取自身cpu频率、cpu内核数量、当前cpu使用占比,并将获取的cpu频率、cpu内核数量、当前cpu使用占比信息发送至服务器,服务器可以进行接收,并通过公式(3)计算得到客户端cpu的实时算力;客户端还可以根据自身cpu频率、cpu内核数量、当前cpu使用占比,并通过公式(3)计算得到客户端cpu的实时算力,再将客户端cpu的实时算力信息发送至服务器。

在一些实施例中,服务器还可以通过部署telnet工具,通过vmstat,cat/proc/cpuinfo等命令查看客户端的cpu频率、cpu内核数量、当前cpu使用占比,并利用公式(3)计算cpu的实时算力power。服务器还可以根据其他任意方式获取客户端的cpu频率、cpu内核数量、当前cpu使用占比或者客户端cpu的实时算力,本说明书实施例对此不作限定。

在一些实施例中,由于客户端的使用情况会发生变化,导致当前cpu使用占比改变,进而使得客户端cpu的实时算力发生变化,因此,可以通过连续获取某段时间内客户端cpu的实时算力,得到一个较稳定的综合算力值。

s130:根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率。

在一些实施例中,可以根据以下公式确定所述待传输图片的图片压缩率:

t=f(powera,rtts,c)(4)

其中,power为所述客户端cpu的实时算力,rtts为当前网络带宽,c为图片压缩率,t为传输总耗时。

具体的,在当前网络带宽和客户端cpu的实时算力已经确定的情况下,想要确定图片传输的总耗时则还需确定图片压缩率。其中,传输总耗时包括传输耗时和压缩解压耗时,在网络状态一定的情况下,由于相同的图片在传输前进行压缩,不同的压缩率得到的压缩后图片的大小不同,其中压缩率越大则压缩后的图片越小,传输耗时也越少。压缩解压耗时则与客户端cpu的实时算力、选择的压缩算法和压缩率有关,因此在客户端cpu的实时算力的值确定的情况下,以及根据图片的类型选择合适的压缩算法,图片压缩率的越小,则压缩解压耗时越短。

在一些实施例中,请参阅表1,表1列出了几种压缩算法的名称、描述以及各压缩算法的优缺点,可以根据图片的类型不同,选择合适的压缩算法。

表1

在上述公式(4)中,当前网络带宽rtts和客户端cpu的实时算力power是已经确定的常量,图片压缩率c和传输总耗时t为变量,在本说明书实施例中,希望图片的传输总耗时尽可能小,因此需要调节图片压缩率,确定所述传输总耗时在极小值时图片压缩率的值为所述待传输图片的图片压缩率。如表2所示,给定一个5m的图片文件,根据计算结果,得出了不同方案中参数之间的关系。

表2

由表2可知,最终计算得出方案三的总耗时最低,因此选择使用方案三为最佳方案。

s140:根据所述图片压缩率将待传输图片压缩并传输至客户端。

在一些实施例中,所述服务器可以根据一个客户端的图片传输请求,向一个客户端传输图片,也可以根据多个客户端的图片传输请求,分别向多个客户端传输图片。在多个客户端请求图片传输时,如图2所示的业务场景,所述服务器可以分别计算每个客户端cpu的实时算力,并根据当前网络情况,分别计算传输总耗时最低时的图片压缩率,并以不同的图片压缩率压缩图片分别进行图片传输。

请参阅图3,在多个客户端请求图片传输时,所述服务器可以根据以下步骤来对图片进行传输。

s310:计算客户端性能值。

所述服务器在接收到客户端的图片传输请求后,还可以计算每个客户端cpu的实时算力,并根据当前网络情况得到一个客户端性能值。

s320:客户端分组。

在本实施例中,可以将客户端性能值相同的客户端分为一组。

s330:针对每组计算最优图片压缩率。

s340:按组进行图片压缩。

在本实施例中,可以根据每组的最优图片压缩率,分别对图片进行压缩。

s350:按组分发图片。

在本实施例中,可以对不同的分组分发不同压缩比的图片文件。

本说明书实施例中,可以通过获取待传输图片,并确定当前网络带宽;根据客户端的性能信息,计算出所述客户端cpu的实时算力;根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;根据所述图片压缩率将待传输图片压缩并传输至客户端,在不改变现有硬件条件下,通过实时采集资源信息、动态完成压缩比计算,实现图片压缩,来对整个图像处理及传输过程进行优化,极大地降低了图片信息传输过程中的网络负载,并充分利用cpu计算能力,降低传输过程的时效,避免请求超时发生。

如图4所示,本说明书实施例还提供一种图片传输服务器,所述服务器包括资源采集单元410、数据存储单元420、智能分析单元430和图片压缩单元440。

其中,所述资源采集单元410用于接收客户端的图片传输请求信息,并采集客户端的性能信息,如客户端cpu频率、cpu内核数量、cpu使用占比等信息,或者采集客户端根据自身cpu频率、cpu内核数量、当前cpu使用占比计算得到的客户端cpu实时算力的信息。

在一些实施例中,客户端可以获取自身cpu频率、cpu内核数量、当前cpu使用占比,并将获取的cpu频率、cpu内核数量、当前cpu使用占比信息发送至图片传输服务器,图片传输服务器中的资源采集单元410可以进行接收;客户端还可以根据自身cpu频率、cpu内核数量、当前cpu使用占比,并通过公式(3)计算得到客户端cpu的实时算力,再将客户端cpu的实时算力信息发送至服务器,图片传输服务器中的资源采集单元410可以进行接收。

在一些实施例中,图片传输服务器还可以通过部署telnet工具,通过vmstat,cat/proc/cpuinfo等命令查看客户端的cpu频率、cpu内核数量、当前cpu使用占比。图片传输服务器还可以根据其他任意方式获取客户端的cpu频率、cpu内核数量、当前cpu使用占比或者客户端cpu的实时算力,本说明书实施例对此不作限定。

所述数据存储单元420,用于存储资源采集单元410采集的信息。

所述智能分析单元430,用于根据存储资源采集单元410采集的信息,计算出客户端cpu的实时算力。其中,客户端cpu的实时算力可以通过公式(3)计算得到。

在一些实施例中,由于客户端的使用情况会发生变化,导致当前cpu使用占比改变,进而使得客户端cpu的实时算力发生变化,因此,可以通过连续获取某段时间内客户端cpu的实时算力,得到一个较稳定的综合算力值。

所述智能分析单元430还用于根据以下步骤来确定网络带宽。

步骤1:将测试图片发送至客户端,并记录每帧图像的发送时间;

步骤2:接收客户端反馈的应答信息,并记录接收时间;

步骤3:根据所述发送时间与接收时间确定当前网络带宽。

图片传输服务器服务器在进行图片传输之前,可以向客户端发送用于测试网络情况的图片,并以直接记录发送时间的方式记录每帧图像和其发送时间。由于客户端按发送顺序接收数据,因此在客户端的接收事件触发时,会向图片传输服务器发送一个应答信息,当图片传输服务器接收到客户端发送的应答信息后,记录当前接收时间,并使用公式(1)得到数据传输往返时间,以及通过公式(2)计算得到当前网络带宽。

所述智能分析单元430还可以用于根据计算得到的当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率。

所述智能分析单元430还可以将计算得到信息存储至数据存储单元420。

所述图片压缩单元440,用于根据所述智能分析单元230计算得到的图片压缩率,将将待传输图片压缩并传输至客户端。

在一些实施例中,所述图片传输服务器可以根据一个客户端的图片传输请求,向一个客户端传输图片,也可以根据多个客户端的图片传输请求,分别向多个客户端传输图片。在多个客户端请求图片传输时,如图2所示的业务场景,所述图片传输服务器可以分别计算每个客户端cpu的实时算力,并根据当前网络情况,分别计算传输总耗时最低时的图片压缩率,并以不同的图片压缩率压缩图片分别进行图片传输。

在一些实施例中,在多个客户端请求图片传输时,所述图片传输服务器在接收到客户端的图片传输请求后,还可以计算每个客户端cpu的实时算力,并根据当前网络情况得到一个客户端性能值,并将客户端性能值相同的客户端分为一组,针对每组计算最优图片压缩率,根据每组的最优图片压缩率,分别对图片进行压缩,对不同的分组分发不同压缩比的图片文件。

本说明书实施例,在不改变现有硬件条件下,通过实时采集资源信息、动态完成压缩比计算,实现图片压缩,来对整个图像处理及传输过程进行优化,极大地降低了图片信息传输过程中的网络负载,并充分利用cpu计算能力,降低传输过程的时效,避免请求超时发生。

本说明书实施例还提供了一种图片传输方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取待传输图片,并确定当前网络带宽;根据客户端的性能信息,计算出所述客户端cpu的实时算力;根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率;根据所述图片压缩率将待传输图片压缩并传输至客户端。

在本实施方式中,上述存储介质包括但不限于随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、缓存(cache)、硬盘(harddiskdrive,hdd)或者存储卡(memorycard)。所述存储器可用于存储所述计算机程序和/或模块,所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、文字转换功能等)等;存储数据区可存储根据用户终端的使用所创建的数据(比如音频数据、文字消息数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器。在本实施方式中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

参阅图5,在软件层面上,本说明书实施例还提供了一种图片传输装置,该装置具体可以包括以下的结构模块。

第一确定模块510,用于获取待传输图片,并确定当前网络带宽。

计算模块520,用于根据客户端的性能信息,计算出所述客户端cpu的实时算力.

第二确定模块530,用于根据所述当前网络带宽和所述客户端cpu的实时算力确定所述待传输图片的图片压缩率。

传输模块540,用于根据所述图片压缩率将待传输图片压缩并传输至客户端。

在一些实施例中,所述第一确定模块510还包括:发送模块,用于将测试图片发送至客户端,并记录每帧图像的发送时间;接收模块,用于接收客户端反馈的应答信息,并记录接收时间;网络带宽确定模块,用于根据所述发送时间与接收时间确定当前网络带宽。

本说明书实施例提供的图片传输装置,在不改变现有硬件条件下,通过实时采集资源信息、动态完成压缩比计算,实现图片压缩,来对整个图像处理及传输过程进行优化,极大地降低了图片信息传输过程中的网络负载,并充分利用cpu计算能力,降低传输过程的时效,避免请求超时发生。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例和设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1