CN113918249A - 一种背景模糊控件的实现方法及装置 - Google Patents
一种背景模糊控件的实现方法及装置 Download PDFInfo
- Publication number
- CN113918249A CN113918249A CN202111075227.9A CN202111075227A CN113918249A CN 113918249 A CN113918249 A CN 113918249A CN 202111075227 A CN202111075227 A CN 202111075227A CN 113918249 A CN113918249 A CN 113918249A
- Authority
- CN
- China
- Prior art keywords
- image
- thread
- blurred
- control
- background
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 60
- 238000004590 computer program Methods 0.000 claims description 11
- 230000003321 amplification Effects 0.000 claims description 6
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 6
- 230000009467 reduction Effects 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 6
- 230000002618 waking effect Effects 0.000 claims description 5
- 238000009877 rendering Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 239000005338 frosted glass Substances 0.000 description 8
- 239000005337 ground glass Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000007717 exclusion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种背景模糊控件的实现方法及装置,该方法包括:通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程;通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。本发明提供的背景模糊控件的实现方法,当屏幕刷新时,通过第一线程获取控件下层的目标图像并发送至第二线程,第二线程、第三线程以及缓存队列组成生产者消费者模式,由第二线程作为生产者将经过模糊处理的图像加入缓存队列,再由第三线程作为消费者从缓存队列中读取模糊图像作为控件的背景图像,实现实时变化的背景模糊控件。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种背景模糊控件的实现方法及装置。
背景技术
目前在android领域,几乎还没有一种成熟的背景模糊(毛玻璃)控件在实际的App项目中被使用。原因在于,android原生系统没有像ios系统那样提供了默认背景模糊控件,在android系统中,如果想实现一个高性能、流畅的控件是比较有难度的。很多app中使用的毛玻璃效果是静态的,而不是动态的。就是说当控件的下层图片或界面发生变化时,控件的背景并不会跟着实时变化,这是一种假毛玻璃的实现。
发明内容
本发明提供一种背景模糊控件的实现方法,用以解决现有技术中控件的模糊背景不会随着屏幕刷新实时变化的缺陷,实现屏幕刷新时背景模糊控件的实时更新变化。
本发明提供一种背景模糊控件的实现方法,包括:
通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程;
通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;
通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
根据本发明提供的一种背景模糊控件的实现方法,通过所述第二线程将所述模糊图像加入缓冲队列,包括:
通过所述第二线程获取所述缓冲队列的模糊图像数量;
若所述模糊图像数量未达到预设阈值,将所述模糊图像加入所述缓冲队列的尾部;
若所述模糊图像数量达到预设阈值,获取所述缓冲队列的头部模糊图像,删除所述头部模糊图像,将所述模糊图像加入缓冲队列的尾部。
根据本发明提供的一种背景模糊控件的实现方法,所述方法还包括:
在所述缓冲队列为空的情况下,挂起所述第三线程;
在通过所述第二线程将所述模糊图像加入缓冲队列时,唤醒所述第三线程。
根据本发明提供的一种背景模糊控件的实现方法,所述通过第一线程获取屏幕刷新时的目标图像包括:
通过第一线程接收监听器发送的屏幕刷新消息;
基于所述屏幕刷新消息采集目标图像。
根据本发明提供的一种背景模糊控件的实现方法,所述基于所述屏幕刷新消息采集目标图像,包括:
创建画布以及与所述控件大小相同的位图;
将所述画布与所述位图进行绑定以保存所述目标图像;
基于所述控件的位置信息将所述画布进行比例调整以及平移处理;
基于所述处理后的画布和控件的下层图像,得到所述目标图像。
根据本发明提供的一种背景模糊控件的实现方法,所述控件包括子视图,所述子视图填充所述控件,所述将所述模糊图像作为控件的背景图像,包括:
将所述模糊图像绘制在所述子视图中,以使所述模糊图像作为所述控件的背景图像。
根据本发明提供的一种背景模糊控件的实现方法,所述将所述模糊图像绘制在所述子视图中,包括:
将所述模糊图像绘制在所述子视图的画布上;
向所述子视图发送画布更新消息,以使所述子视图进行更新。
根据本发明提供的一种背景模糊控件的实现方法,所述通过第二线程对所述目标图像进行模糊处理得到模糊图像,包括:
通过第二线程将所述目标图像依次进行等比例缩小处理、高斯模糊处理以及等比例放大处理,得到模糊图像。
本发明还提供一种背景模糊控件的实现装置,包括:
第一处理单元,用于通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程;
第二处理单元,用于通过所述第二线程进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;
第三处理单元,用于通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
根据本发明提供的一种背景模糊控件的实现装置,所述第二处理单元还用于:
通过所述第二线程获取所述缓冲队列的模糊图像数量;
若所述模糊图像数量未达到预设阈值,将所述模糊图像加入所述缓冲队列的尾部;
若所述模糊图像数量达到预设阈值,获取所述缓冲队列的头部模糊图像,删除所述头部模糊图像,将所述模糊图像加入缓冲队列的尾部。
根据本发明提供的一种背景模糊控件的实现装置,所述第三处理单元还用于:
在所述缓冲队列为空的情况下,挂起所述第三线程;
在通过所述第二线程将所述模糊图像加入缓冲队列时,唤醒所述第三线程。
根据本发明提供的一种背景模糊控件的实现装置,所述第一处理单元还用于:
通过第一线程接收监听器发送的屏幕刷新消息;
基于所述屏幕刷新消息采集目标图像。
根据本发明提供的一种背景模糊控件的实现装置,所述第一处理单元还用于:
创建画布以及与所述控件大小相同的位图;
将所述画布与所述位图进行绑定以保存所述目标图像;
基于所述控件的位置信息将所述画布进行比例调整以及平移处理;
基于所述处理后的画布和控件的下层图像,得到所述目标图像。
根据本发明提供的一种背景模糊控件的实现装置,所述控件包括子视图,所述子视图填充所述控件,所述第三处理单元还用于:
将所述模糊图像绘制在所述子视图中,以使所述模糊图像作为所述控件的背景图像。
根据本发明提供的一种背景模糊控件的实现装置,所述第三处理单元还用于:
将所述模糊图像绘制在所述子视图的画布上;
向所述子视图发送画布更新消息,以使所述子视图进行更新。
根据本发明提供的一种背景模糊控件的实现装置,所述第二处理单元还用于:
通过第二线程将所述目标图像依次进行等比例缩小处理、高斯模糊处理以及等比例放大处理,得到模糊图像。
本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述背景模糊控件的实现方法的步骤。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述背景模糊控件的实现方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述背景模糊控件的实现方法的步骤。
本发明提供的背景模糊控件的实现方法及装置,当屏幕刷新时,通过第一线程获取控件下层的目标图像并发送至第二线程,第二线程、第三线程以及缓存队列组成生产者消费者模式,由第二线程作为生产者将经过模糊处理的目标图像加入缓存队列,再由第三线程作为消费者从缓存队列中读取作为控件的背景图像,实现实时变化的背景模糊控件,能够在很少占用系统资源的情况下,给用户十分流畅的背景模糊体验,即使在算力比较弱的设备上也能够有流畅的效果。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的背景模糊控件的效果图之一;
图2是本发明提供的背景模糊控件的效果图之二;
图3是本发明提供的背景模糊控件的效果图之三;
图4是本发明提供的背景模糊控件的实现方法的流程示意图之一;
图5是本发明提供的背景模糊控件的实现方法的流程示意图之二;
图6是本发明提供的背景模糊控件的实现方法的流程示意图之三;
图7是本发明提供的背景模糊控件的实现方法的流程示意图之四;
图8是本发明提供的背景模糊控件的实现方法的流程示意图之五;
图9是本发明提供的背景模糊控件的实现方法的流程示意图之六;
图10是本发明提供的背景模糊控件的实现装置的结构示意图;
图11是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前在android领域,几乎还没有一种成熟的背景模糊(毛玻璃)控件在实际的App项目中被使用。原因在于,第一,android原生系统没有像ios系统那样提供了默认的毛玻璃控件。在android系统中,如果想实现一个高性能、流畅的毛玻璃控件是比较有难度的。第二,市面上的android手机的性能千差万别。由于毛玻璃效果需要实时对图片进行模糊计算,如果不能以最优的方式去实现,那么就会在一些中低性能手机上表现的效果极差,导致页面卡顿严重,甚至影响正常使用。第三,很多app中使用的毛玻璃效果是静态的,而不是动态的。就是说当毛玻璃控件的下层图片或界面发生变化时,毛玻璃的控件的背景并不会跟着实时变化,这是一种假毛玻璃的实现。第四,基本上主流的方案都没有解决图像模糊导致的延时问题。常见的方案是在工作线程中进行图像模糊,然后将处理过的图像再抛回主线程展示,由于线程切换的延时问题,这样做会导致毛玻璃无法做到实时模糊。而另一些方案直接把图像模糊的处理放到主线程里,这样虽然可以避免主线程和工作线程的切换的延时问题,但当图像模糊比较耗时时,主线程会被阻塞,导致卡顿。第五,部分方案无法兼容Android5.0以下的设备。
为解决上述问题,本发明提出一种高效的、流畅的、实时的背景模糊控件BlurView,BlurView是一种可以运用于实际项目中的背景模糊控件,即使在中低端手机上也有流畅的效果体验。在BlurView的使用中,可以把BlurView当作帧布局(FrameLayout),FrameLayout是一种android布局,在FrameLayout中,整个界面被当成一块空白备用区域,在其中添加如Button、TextView等子控件,默认情况下所有的子控件全部都放置于该区域的左上角,FrameLayout的大小由控件中最大的子控件决定,后续添加的子控件会覆盖前一个子控件,可以通过layout_gravity属性来指定控件在区域中的具体位置。图1为本发明提供的BlurView的效果图,如图1、2、3所示,其中,BlurView中添加了recyclerview和anim两个按钮,recyclerview用于切换BlurView的下层图像,anim用于调整BlurView的位置变化。如图1、2所示,当点击recyclerview按钮时,BlurView实现毛玻璃效果的背景图像会随着其下层图像实时更新变化;如图1、3所示,当点击anim按钮时,BlurView本身的位置也会上下移动。
图4为本发明一实施例提供的背景模糊控件的实现方法的流程示意图,如图4所示,具体包括如下步骤:
步骤410、通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程。
具体来说,BlurView的工作流程按照不同线程可以分为三部分:UI线程、Blur线程、Render线程,其中,UI线程为第一线程,Blur线程为第二线程,Render为第三线程。当第一线程检测到屏幕刷新时,包括BlurView的下层图像发生变化或者BlurView本身的位置发生变化,在第一时间获取BlurView下层的目标图像,将目标图像异步发送给第二线程进行下一步处理。
步骤420、通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列。
步骤430、通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
具体来说,第二线程会不停地对第一线程发送的目标图像进行模糊处理,并将处理后的模糊图像加入到缓冲队列。第三线程会在一个while无限循环中不断从缓冲队列中获取模糊图像,将模糊图像作为BlurView的背景图像。
优选的,本实施例将模糊图像加入双缓冲队列,其中,双缓冲队列包括写入数据队列和读取数据队列,两个缓冲队列分别对应互斥锁LockA和LockB,第二线程、第三线程以及双缓冲队列组成了典型的生产者消费者模式,是一种非常高效的数据生产和消费的处理流。大多数情况下,第二线程控制写入数据队列进行写操作,第三线程控制读取数据队列进行读操作。当第三线程读完读取数据队列(对应LockA),立即释放对LockA的控制,一旦第二线程释放LockB,第三线程立即控制LockB,并开始读取LockB对应的队列数据,同时第二线程锁住LockA,开始进行写操作,这样就完成了队列交换,大大降低了单缓冲区时部分操作互斥或同步的开销。
本发明提供的背景模糊控件的实现方法,当屏幕刷新时,通过第一线程获取控件下层的目标图像并发送至第二线程,第二线程、第三线程以及缓存队列组成生产者消费者模式,由第二线程作为生产者将经过模糊处理的目标图像加入缓存队列,再由第三线程作为消费者从缓存队列中读取作为控件的背景图像,实现实时变化的背景模糊控件,能够在很少占用系统资源的情况下,给用户十分流畅的背景模糊体验,即使在算力比较弱的设备上也能够有流畅的效果。
进一步地,在本发明一实施例中,如图5所示,通过所述第二线程将所述模糊图像加入缓冲队列,具体包括:
步骤510、通过所述第二线程获取所述缓冲队列的模糊图像数量。
步骤520、若所述模糊图像数量未达到预设阈值,将所述模糊图像加入所述缓冲队列的尾部。
步骤530、若所述模糊图像数量达到预设阈值,获取所述缓冲队列的头部模糊图像,删除所述头部模糊图像,将所述模糊图像加入缓冲队列的尾部。
具体来说,预先设置缓冲队列中模糊图像数量的阈值,优选地,本发明的缓冲队列中最多保存两张模糊图像。当有第三张模糊图像准备放入缓冲队列时,会先移除缓冲队列头部的模糊图像,再将当前模糊图像添加到缓冲队列中,这样缓冲队列中同一时间最多只会保留两张模糊图像,并且,由于向缓冲队列尾部添加模糊图像,从缓冲队列头部移除模糊图像,可以保证当前缓冲队列中为最新帧的模糊图像。上述向缓冲队列中添加模糊图像的方式,可以防止内存无限制增加,也减少了第三线程读取模糊图像的工作负荷,而且由于队列中移除的是最早的一帧模糊图像,对BlurView模糊的实时性也基本没有影响。
进一步地,在本发明一实施例中,如图6所示,所述方法还包括:
步骤610、在所述缓冲队列为空的情况下,挂起所述第三线程。
步骤620、在通过所述第二线程将所述模糊图像加入缓冲队列时,唤醒所述第三线程。
需要说明的是,第三线程会在一个while无限循环中不断从缓冲队列获取模糊图像,但是如果当前缓冲队列中没有未读取的模糊图像,第三线程仍然会执行循环读取操作,这样会增加一些无用的开销,所以在缓冲队列为空的情况下,需要中止第三线程的执行。具体来说,当发现缓冲队列为空时,调用lockObject.wait()方法将第三线程挂起,直到第二线程下一次向缓冲队列添加模糊图像的同时,调用lockObject.notify()方法将第三线程唤醒。
进一步地,在本发明一实施例中,如图7所示,所述通过第一线程获取屏幕刷新时的目标图像,包括:
步骤710、通过第一线程接收监听器发送的屏幕刷新消息。
步骤720、基于所述屏幕刷新消息采集目标图像。
需要说明的是,根据ViewRootImpl的绘制原理采集目标图像,每当屏幕需要刷新时,ViewRootImpl的perform Travesal()方法先被调用,然后依次调用performMeasure()、performLayout()和performDraw()方法,而在performDraw()方法被调用前,ViewRootImpl会调用viewTreeObserver.dispatchPreDraw()方法通知所有注册过该监听的对象,即发送屏幕刷新消息,并执行其onPreDraw()方法。所以,需要在BlurView初始化时,向viewTreeObserver注册一个监听器OnPreDrawListener,并重写onPreDraw()方法。在onPreDraw()方法中执行具体的目标图像采集操作。
进一步地,在本发明一实施例中,如图8所示,步骤720具体包括:
步骤810、创建画布以及与所述控件大小相同的位图。
具体来说,在onPreDraw()方法中借助ActivityBitmapCroper类进行具体的目标图像采集。首先创建一个和BlurView大小相同的位图对象surfaceBitmap,surfaceBitmap创建后可重复使用。同时,创建一个画布Canvas用于后续目标图像的绘制。
步骤820、将所述画布与所述位图进行绑定以保存所述目标图像。
具体来说,通过Canvas.setBitmap(surfaceBitmap)将surfaceBitmap设置到Canvas中以保存目标图像。
步骤830、基于所述控件的位置信息将所述画布进行比例调整以及平移处理。
具体来说,由于不需要将BlurView下层的整个视图全部绘制到surfaceBitmap上,只需要将BlurView正下方对应的图像绘制到surfaceBitmap上即可,所以通过matrix对Canvas进行比例调整以及平移处理,得到变换后的Canvas。
步骤840、基于所述处理后的画布和控件的下层图像,得到所述目标图像。
进一步地,在本发明一实施例中,所述控件包括子视图,所述子视图填充所述控件,所述将所述模糊图像作为控件的背景图像,包括:
将所述模糊图像绘制在所述子视图中,以使所述模糊图像作为所述控件的背景图像。
需要说明的是,BlurView是继承于FrameLayout的自定义View,BlurView内部持有一个SurfaceView对象,并将SurfaceView作为BlurView的第一个子视图,SurfaceView的宽高会填充满整个BlurView,以实现SurfaceView作为BlurView的背景来显示。将模糊图像绘制在SurfaceView,即可使模糊图像作为BlurView的背景图像。同时,将模糊图像绘制在SurfaceView中,使得BlurView的实时模糊渲染直接在工作线程中进行,并不会导致主线程UI出现卡顿。
进一步地,在本发明一实施例中,如图9所示,所述将所述模糊图像绘制在所述子视图中,包括:
步骤910、将所述模糊图像绘制在所述子视图的画布上。
步骤920、向所述子视图发送画布更新消息,以使所述子视图进行更新。
具体来说,将模糊图像绘制在SurfaceView的画布上,并通知SurfaceView及时更新画布,使模糊图像作为BlurView的背景图像。
进一步地,在本发明一实施例中,所述通过第二线程对所述目标图像进行模糊处理得到模糊图像,包括:
通过第二线程将所述目标图像依次进行等比例缩小处理、高斯模糊处理以及等比例放大处理,得到模糊图像。
其中,高斯模糊是图像处理软件中广泛使用的处理效果,通常用来减少图像噪声以及降低图像细节层次,这种模糊技术生成的图像,其视觉效果就像是经过一个毛玻璃在观察图像。本实施例中,由HandlerThread和Handler结合实现目标图像的高斯模糊处理。当Handler接收到第一线程发送的目标图像时,onHandleMessage()方法会被调用对目标图像进行高斯模糊处理。其中,高斯模糊主要是通过一种android上的成熟且高效的高斯模糊解决方案RenderScript实现的。高斯模糊是BlurView中最消耗性能的处理逻辑,为了保证性能,在高斯模糊处理前,会对目标图像进行等比例缩小,高斯模糊完成后再进行等比例放大。这样会极大减少高斯模糊的计算时间,而对模糊效果也几乎不会受到影响。
下面对本发明提供的背景模糊控件的实现装置进行描述,下文描述的背景模糊控件的实现装置与上文描述的背景模糊控件的实现方法可相互对应参照。
图10为本发明一实施例提供的背景模糊控件的实现装置的结构会示意图,如图10所示,具体包括:
第一处理单元1010,用于通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程。
第二处理单元1020,用于通过所述第二线程进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列。
第三处理单元1030,用于通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
本发明提供的背景模糊控件的实现装置,当屏幕刷新时,通过第一线程获取控件下层的目标图像并发送至第二线程,第二线程、第三线程以及缓存队列组成生产者消费者模式,由第二线程作为生产者将经过模糊处理的目标图像加入缓存队列,再由第三线程作为消费者从缓存队列中读取作为控件的背景图像,实现实时变化的背景模糊控件,能够在很少占用系统资源的情况下,给用户十分流畅的背景模糊体验,即使在算力比较弱的设备上也能够有流畅的效果。
根据本发明提供的一种背景模糊控件的实现装置,所述第二处理单元1020还用于:
通过所述第二线程获取所述缓冲队列的模糊图像数量;
若所述模糊图像数量未达到预设阈值,将所述模糊图像加入所述缓冲队列的尾部;
若所述模糊图像数量达到预设阈值,获取所述缓冲队列的头部模糊图像,删除所述头部模糊图像,将所述模糊图像加入缓冲队列的尾部。
根据本发明提供的一种背景模糊控件的实现装置,所述第三处理单元1030还用于:
在所述缓冲队列为空的情况下,挂起所述第三线程;
在通过所述第二线程将所述模糊图像加入缓冲队列时,唤醒所述第三线程。
根据本发明提供的一种背景模糊控件的实现装置,所述第一处理单元1010还用于:
通过第一线程接收监听器发送的屏幕刷新消息;
基于所述屏幕刷新消息采集目标图像。
根据本发明提供的一种背景模糊控件的实现装置,所述第一处理单元1010还用于:
创建画布以及与所述控件大小相同的位图;
将所述画布与所述位图进行绑定以保存所述目标图像;
基于所述控件的位置信息将所述画布进行比例调整以及平移处理;
基于所述处理后的画布和控件的下层图像,得到所述目标图像。
根据本发明提供的一种背景模糊控件的实现装置,所述控件包括子视图,所述子视图填充所述控件,所述第三处理单元1030还用于:
将所述模糊图像绘制在所述子视图中,以使所述模糊图像作为所述控件的背景图像。
根据本发明提供的一种背景模糊控件的实现装置,所述第三处理单元1030还用于:
将所述模糊图像绘制在所述子视图的画布上;
向所述子视图发送画布更新消息,以使所述子视图进行更新。
根据本发明提供的一种背景模糊控件的实现装置,所述第二处理单元1020还用于:
通过第二线程将所述目标图像依次进行等比例缩小处理、高斯模糊处理以及等比例放大处理,得到模糊图像。
图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑指令,以执行背景模糊控件的实现方法,该方法包括:通过第一线程获取目标图像,将所述目标图像异步发送至第二线程;通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
此外,上述的存储器1130中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的背景模糊控件的实现方法,该方法包括:通过第一线程获取目标图像,将所述目标图像异步发送至第二线程;通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的背景模糊控件的实现方法,该方法包括:通过第一线程获取目标图像,将所述目标图像异步发送至第二线程;通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种背景模糊控件的实现方法,其特征在于,包括:
通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程;
通过所述第二线程对所述目标图像进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;
通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
2.根据权利要求1所述的背景模糊控件的实现方法,其特征在于,通过所述第二线程将所述模糊图像加入缓冲队列,包括:
通过所述第二线程获取所述缓冲队列的模糊图像数量;
若所述模糊图像数量未达到预设阈值,将所述模糊图像加入所述缓冲队列的尾部;
若所述模糊图像数量达到预设阈值,获取所述缓冲队列的头部模糊图像,删除所述头部模糊图像,将所述模糊图像加入缓冲队列的尾部。
3.根据权利要求1所述的背景模糊控件的实现方法,其特征在于,所述方法还包括:
在所述缓冲队列为空的情况下,挂起所述第三线程;
在通过所述第二线程将所述模糊图像加入缓冲队列时,唤醒所述第三线程。
4.根据权利要求1所述的背景模糊控件的实现方法,其特征在于,所述通过第一线程获取屏幕刷新时的目标图像包括:
通过第一线程接收监听器发送的屏幕刷新消息;
基于所述屏幕刷新消息采集目标图像。
5.根据权利要求4所述的背景模糊控件的实现方法,其特征在在于,所述基于所述屏幕刷新消息采集目标图像,包括:
创建画布以及与所述控件大小相同的位图;
将所述画布与所述位图进行绑定以保存所述目标图像;
基于所述控件的位置信息将所述画布进行比例调整以及平移处理;
基于所述处理后的画布以及控件的下层图像,得到所述目标图像。
6.根据权利要求1所述的背景模糊控件的实现方法,其特征在于,所述控件包括子视图,所述子视图填充所述控件,所述将所述模糊图像作为控件的背景图像,包括:
将所述模糊图像绘制在所述子视图中,以使所述模糊图像作为所述控件的背景图像。
7.根据权利要求6所述的背景模糊控件的实现方法,其特征在于,所述将所述模糊图像绘制在所述子视图中,包括:
将所述模糊图像绘制在所述子视图的画布上;
向所述子视图发送画布更新消息,以使所述子视图进行更新。
8.根据权利要求1所述的背景模糊控件的实现方法,其特征在于,所述通过第二线程对所述目标图像进行模糊处理得到模糊图像,包括:
通过第二线程将所述目标图像依次进行等比例缩小处理、高斯模糊处理以及等比例放大处理,得到模糊图像。
9.一种背景模糊控件的实现装置,其特征在于,包括:
第一处理单元,用于通过第一线程获取屏幕刷新时的目标图像,将所述目标图像异步发送至第二线程;
第二处理单元,用于通过所述第二线程进行模糊处理得到模糊图像,将所述模糊图像加入缓冲队列;
第三处理单元,用于通过第三线程从所述缓冲队列中获取模糊图像,将所述模糊图像作为控件的背景图像。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至8任一项所述控件实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075227.9A CN113918249B (zh) | 2021-09-14 | 2021-09-14 | 一种背景模糊控件的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075227.9A CN113918249B (zh) | 2021-09-14 | 2021-09-14 | 一种背景模糊控件的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918249A true CN113918249A (zh) | 2022-01-11 |
CN113918249B CN113918249B (zh) | 2023-11-21 |
Family
ID=79234704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111075227.9A Active CN113918249B (zh) | 2021-09-14 | 2021-09-14 | 一种背景模糊控件的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918249B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756323A (zh) * | 2022-06-14 | 2022-07-15 | 统信软件技术有限公司 | 一种模糊控件创建方法、装置与计算设备 |
CN115357414A (zh) * | 2022-09-14 | 2022-11-18 | 北京云枢创新软件技术有限公司 | 基于SystemC和C++的多线程数据传输系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9691122B2 (en) * | 2014-06-30 | 2017-06-27 | Intel Corporation | Facilitating dynamic and efficient pre-launch clipping for partially-obscured graphics images on computing devices |
CN104392408B (zh) * | 2014-10-20 | 2019-04-16 | 贵阳语玩科技有限公司 | 一种展现图像的系统及方法 |
CN105306552A (zh) * | 2015-09-30 | 2016-02-03 | 中国科学院计算技术研究所 | 一种基于消息队列的消费均衡方法及系统 |
CN109739505B (zh) * | 2019-01-08 | 2019-11-29 | 网易(杭州)网络有限公司 | 一种用户界面的处理方法和装置 |
CN110515610B (zh) * | 2019-06-27 | 2021-01-29 | 华为技术有限公司 | 页面绘制的控制方法、装置及设备 |
US11127107B2 (en) * | 2019-09-30 | 2021-09-21 | Intel Corporation | Apparatus and method for real time graphics processing using local and cloud-based graphics processing resources |
CN113010300B (zh) * | 2019-12-20 | 2024-07-23 | 北京字节跳动网络技术有限公司 | 图像效果的刷新方法、装置、电子设备及计算机可读存储介质 |
CN112488906B (zh) * | 2020-11-30 | 2023-10-31 | 中科院计算所西部高等技术研究院 | 基于多线程的图像处理方法、计算机设备和存储介质 |
CN113051047B (zh) * | 2021-03-03 | 2023-06-27 | 驭新智行科技(宁波)有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
-
2021
- 2021-09-14 CN CN202111075227.9A patent/CN113918249B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756323A (zh) * | 2022-06-14 | 2022-07-15 | 统信软件技术有限公司 | 一种模糊控件创建方法、装置与计算设备 |
CN115357414A (zh) * | 2022-09-14 | 2022-11-18 | 北京云枢创新软件技术有限公司 | 基于SystemC和C++的多线程数据传输系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113918249B (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11344806B2 (en) | Method for rendering game, and method, apparatus and device for generating game resource file | |
CN109947569B (zh) | 绑定核心的方法、装置、终端及存储介质 | |
CN113918249B (zh) | 一种背景模糊控件的实现方法及装置 | |
CN111080766B (zh) | 一种基于WebGL的GPU加速海量目标高效渲染方法 | |
US20220139352A1 (en) | Method and Device for Image Composition, Electronic Device and Storage Medium | |
CN105630478B (zh) | 一种实现页面切换的方法和装置 | |
EP4002281A1 (en) | Layer composition method and apparatus, electronic device, and storage medium | |
US20130063473A1 (en) | System and method for layering using tile-based renderers | |
CN111651079A (zh) | 书写笔迹显示方法、装置、设备及计算机存储介质 | |
CN109966739B (zh) | 一种优化游戏运行的方法及系统 | |
CN110494837B (zh) | 使用高优先级队列进行墨水渲染 | |
CN108876699A (zh) | 动态估计帧运行时间的方法、装置及其处理器 | |
CN112596843A (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
CN111586489A (zh) | 弹幕渲染方法、装置、计算机设备及存储介质 | |
US10643580B2 (en) | Method and device for switching playing mode of a mobile terminal, storage medium and program | |
CN112783346A (zh) | 一种笔迹数据处理方法、系统、计算机设备及存储介质 | |
CN105892817A (zh) | 应用程序中窗口的控制方法和装置 | |
CN105450986B (zh) | 一种Linux下视频处理方法 | |
KR20160130455A (ko) | 애니메이션 데이터 생성 방법, 장치, 및 전자 기기 | |
CN107133907A (zh) | 图形绘制方法和装置 | |
US8780120B2 (en) | GPU self throttling | |
KR102151364B1 (ko) | 애니메이션 생성 방법 및 장치 | |
CN109587555A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
US20180144521A1 (en) | Geometric Work Scheduling of Irregularly Shaped Work Items | |
CN106354449B (zh) | 一种文档在线演示方法及客户端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |