一种模拟景深效果的拍照方法及其移动终端与流程

文档序号:27839354发布日期:2021-12-08 00:48阅读:146来源:国知局
一种模拟景深效果的拍照方法及其移动终端与流程

1.本发明涉及摄像技术领域,尤其涉及一种模拟景深效果的拍照方法及其移动终端。


背景技术:

2.随着手机性能的不断提高,手机拍照技术也越来越好,用户不用买专业的相机就可以拍出满意的照片,现在很多用户都喜欢用手机自拍,使得手机除了通讯功能外又多了一份娱乐性。
3.目前,手机及平板电脑等移动终端大多配置有前后置摄像头,使移动终端用户能够轻松实现拍照或自拍。然而一个现实的问题在于,现有大多中低端手机或平板电脑因为成本问题,其后置摄像头通常不会配置长焦镜头,而前置摄像头配置长焦镜头的更是寥寥无几。
4.为此此类中低端移动设备在拍摄照片时,无法通过自身镜头性能,实现长焦镜头的景深虚化拍摄效果,使得自身拍照体验与带有长焦镜头的移动设备形成较大的使用体验落差。
5.而现有技术为了解决该问题,曾提出了《一种基于opengl实现景深效果的方法》(专利公开号cn102750726b)其方案主要通过:获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息;根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息;计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息;根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息并对所述图像进行渲染。本发明的实施例中,通过基于opengl的mipmap原理与泊松分布结合,计算不同层级的图像场景信息实现景深,提高了实现景深的效率和效果。
6.然而该现有技术的缺陷在于,其方案依赖于gpu性能进行运算处理,但矛盾的是,现有的中低端移动设备的gpu性能却较弱,因此即便采用该方案进行虚化处理后的预览帧,也可能仅为10fps左右,预览时会有明显卡顿现象,可见该现有技术应用在gpu性能较弱的中低端移动设备时,显然无法达到良好的使用体验。


技术实现要素:

7.鉴于此,为了改善现有技术的缺陷,在减少对gpu性能依赖的同时,也能模拟景深拍摄效果,达到良好的使用体验,本发明提供一种模拟景深效果的拍照方法及其移动终端方案。
8.为了实现上述目的,本发明的第一个方面,提供了一种模拟景深效果的拍照方法,用于安卓系统终端,其步骤包括:
9.s1设置位图数据的渐变虚化区、焦点区、渐变虚化系数及虚化系数;
10.s2监测到模拟景深事件被触发时,捕获相机预览帧作为待虚化位图数据及原图位
图数据;
11.s3设置renderscript调用cpu使用虚化系数对待虚化位图数据进行高斯模糊处理计算,获取虚化位图数据;
12.s4以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;
13.s5依据渐变虚化系数,处理原图位图数据中的渐变虚化区,获取渐变模糊像素,以用来替换虚化位图数据的渐变虚化区内像素。
14.其中在可能的优选实施方式中,获取渐变模糊像素的计算过程包括:设a为虚化位图数据,b为原图位图数据,s为渐变虚化系数,计算公式f=a*(1

s)+b*s,以获取渐变模糊像素f。
15.其中在可能的优选实施方式中,相机预览帧的捕获步骤包括:
16.s21调用camera类的open方法打开相机并得到camera实例对象;
17.s22定义textureview并使用其作为camera预览显示的view;
18.s23实例化surfacetexturelistener类并通过setsurfacetexturelistener方法设置给textureview,当textureview视图可用时,回调surfacetexturelistener类的onsurfacetextureavailable方法获取到surfacetexture纹理对象;
19.s24把获取到的纹理对象作为setpreviewtexture方法的参数设置给camera对象,textureview成功显示camera预览数据;
20.s25调用textureview类内置的getbitmap方法获取到camera的实时预览帧bitmap位图数据。
21.其中在可能的优选实施方式中,设置位图数据的渐变虚化区、焦点区的步骤包括:
22.s11定义内区与外区,其中外区与内区相叠,且内区内没有虚化效果,为焦点区,而外区与内区非相叠区域为渐变虚化区,处理中心为焦点区和渐变虚化区的中心;
23.s12通过自定义类blurlnfo创建一个包括:处理中心的x、y坐标,内区尺寸、外区尺寸参数的实例,作为smoothrender的参数info。
24.其中在可能的优选实施方式中,设置renderscript调用cpu使用虚化系数对待虚化位图数据进行高斯模糊处理计算的步骤包括:
25.s31通过allocation类内置createfrombitmap方法从待虚化位图创建一个分配input对象;
26.s32通过allocation类内置createtyped方法创建一个分配output对象,类型为input类型;
27.s33调用renderscript类内置setradius方法设置模糊的程度;把创建的分配input对象作为renderscript类内置setlnput方法的参数,设置模糊的输入分配;
28.s34把创建的分配output对象作为renderscript类内置foreach方法的参数,将筛选器应用到输入分配并保存到分配output中;
29.s35调用allocation类内置copyto方法从分配output对象中复制到bitmap,以获得虚化位图数据。
30.为了实现上述目的,根据本发明的第二个方面,提供了一种移动终端,采用安卓系统,其中当其启动拍照程序时,所述移动终端执行上述任一所述的模拟景深效果的拍照方法的步骤。
31.为了实现上述目的,根据本发明的第三个方面,提供了一种移动终端,采用安卓系统,其包括:摄像头,控制器,处理器,显示器,存储器,其中,所述存储器中存有预设的位图数据的渐变虚化区、焦点区、渐变虚化系数s及虚化系数;所述控制器用于收到模拟景深事件被触发时,令处理器调用camera类的open方法打开摄像头并得到camera实例对象;定义textureview并使用其作为camera预览显示的view;实例化surfacetexturelistener类并通过setsurfacetexturelistener方法设置给textureview,当textureview视图可用时,回调surfacetexturelistener类的onsurfacetextureavailable方法获取到surfacetexture纹理对象;把获取到的纹理对象作为setpreviewtexture方法的参数设置给camera对象,textureview成功显示camera预览数据;调用textureview类内置的getbitmap方法获取到camera的实时预览帧bitmap位图数据,以此捕获摄像头预览帧作为待虚化位图数据及原图位图数据b,并调用renderscript命令调用处理器使用存储器中的虚化系数对待虚化位图数据进行高斯模糊处理计算,以获取虚化位图数据a,并以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;同时处理器计算公式f=a*(1

s)+b*s,以处理原图位图数据中的渐变虚化区,来获取渐变模糊像素f,并用来替换虚化位图数据的渐变虚化区内像素,获取景深预览帧,以向显示器传输令其示出。
32.为了实现上述目的,根据本发明的第四个方面,提供了一种移动终端,采用安卓系统,其包括:摄像头,控制器,处理器,显示器,存储器,其中,所述存储器中存有预设的位图数据的渐变虚化区、焦点区、渐变虚化系数s及虚化系数;所述控制器用于收到模拟景深事件被触发时,令处理器捕获摄像头预览帧作为待虚化位图数据及原图位图数据b,其中处理器通过调用allocation类内置createfrombitmap方法从待虚化位图创建一个分配input对象,通过allocation类内置createtyped方法创建一个分配output对象,类型为input类型,调用renderscript类内置setradius方法设置模糊的程度,把创建的分配input对象作为renderscript类内置setlnput方法的参数,设置模糊的输入分配,并把创建的分配output对象作为renderscript类内置foreach方法的参数,将筛选器应用到输入分配并保存到分配output中;调用allocation类内置copyto方法从分配output对象中复制到bitmap,以获得虚化位图数据a,并以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;同时处理器计算公式f=a*(1

s)+b*s,以处理原图位图数据中的渐变虚化区,来获取渐变模糊像素f,并用来替换虚化位图数据的渐变虚化区内像素,获取景深预览帧,以向显示器传输令其示出。
33.本发明提供的该模拟景深效果的拍照方法及其移动终端的有益效果如下:
34.本发明利用现有高斯模糊技术手段来模拟相机景深效果,使得没有长焦镜头的移动终端也能具备景深拍摄效果,降低了景深拍摄效果的硬件门槛。
35.此外鉴于现有技术采用opengl模拟景深效果时,过于依赖gpu算力的缺陷,本方案则采用textureview捕获相机预览帧的手段,获取带虚化位图数据与原图位图数据,以供后续结合先处理出虚化位图数据,再与处理后的原图位图数据进行融合的两次处理方案,能够适用于仅调用cpu来进行处理,从而降低对gpu性能依赖的同时,提高处理后的预览帧的fps值,使得部分gpu性能较弱但cpu性能富余的移动终端,能获得较好的使用体验。
附图说明
36.构成本技术的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
37.图1为本发明的模拟景深效果的拍照方法的步骤示意图;
38.图2为本发明的模拟景深效果的拍照方法中焦点区及渐变虚化区的位置示意图;
39.图3为本发明的模拟景深效果的拍照方法捕获位图数据的步骤示意图;
40.图4为本发明的模拟景深效果的拍照方法处理后的景深效果示意图;
41.图5为本发明的模拟景深效果的拍照方法所适用的移动终端的基本硬件结构示意图。
具体实施方式
42.下面对本发明的具体实施方式进行详细地说明。以下示例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。此外在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
43.为了使本领域的技术人员更好的理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,在本领域普通技术人员没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护范围。
44.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
45.请参阅图1所示,本发明提供的该模拟景深效果的拍照方法,用于安卓系统终端,其步骤包括:
46.s1设置位图数据的渐变虚化区、焦点区、渐变虚化系数及虚化系数;
47.s2监测到模拟景深事件被触发时,捕获相机预览帧作为待虚化位图数据及原图位图数据;
48.s3设置renderscript调用cpu使用虚化系数对待虚化位图数据进行高斯模糊处理计算,获取虚化位图数据;
49.s4以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;
50.s5依据渐变虚化系数,处理原图位图数据中的渐变虚化区,获取渐变模糊像素,以用来替换虚化位图数据的渐变虚化区内像素。
51.具体来说,设置位图数据的渐变虚化区、焦点区的步骤包括:
52.s11定义内区与外区,其中外区与内区相叠,且内区内没有虚化效果,为焦点区,而外区与内区非相叠区域为渐变虚化区,处理中心为焦点区和渐变虚化区的中心;
53.s12通过自定义类blurlnfo创建一个包括:处理中心的x、y坐标,内区尺寸、外区尺
寸参数的实例,作为smoothrender的参数info。
54.其中在本实施例下,如图2所示,示例了一种模仿传统长焦镜头的圆形焦点区,及渐变虚化区的景深场景,为此在本实施例中该内区与外区为圆形,且该渐变虚化区则为环状,而该内区与外区尺寸的参数则为半径尺寸,此外在其它可能的实施方式中,该内区外区也可设置呈其它不同形状,如方形,椭圆形等,本实施例并不排除其它形状的实施可能性。
55.示例如:
56.//blurlnfo模糊信息为自定义类,包括处理中心的x、y坐标;inradius内圆r1半径;outradius外圆r2半径blurlnfo info=new blurlnfo();
57.info.x=(int)(monsinglex/apectscale);//x坐标,根据焦点位置获得
58.info.y=(int)(monsingley/apectscale);//y坐标,根据焦点位置获得
59.info.inradius=(int)(in_sharpness_radius*scale/apectscale);//内圆半径内圆是没有虚化效果的
60.info.outradius=(int)(out_sharpness_radius*scale/apectscale);//外圆半径内外圆半径中间环形区域是有非虚化到虚化渐变区间。
61.进一步的,当设置好上述景深的模拟参数后,如图3所示,在优选实施方式中,该步骤s2中的相机预览帧的捕获步骤包括:
62.s21调用camera类的open方法打开相机并得到camera实例对象;
63.s22定义textureview并使用其作为camera预览显示的view;
64.s23实例化surfacetexturelistener类并通过setsurfacetexturelistener方法设置给textureview,当textureview视图可用时,回调surfacetexturelistener类的onsurfacetextureavailable方法获取到surfacetexture纹理对象;
65.s24把获取到的纹理对象作为setpreviewtexture方法的参数设置给camera对象,textureview成功显示camera预览数据;
66.s25调用textureview类内置的getbitmap方法,即可捕获到camera的实时预览帧bitmap位图数据。
67.其中该bitmap位图数据,在本实施例中被分为待虚化位图数据和原图位图数据两种,为了能够便于后续对于两个位图进行融合处理,本案构思上,通过实例化bitmap对象previewbitmap用于存储实时预览帧,并通过renderscript类blurbitmap()对预览帧对象preview进行模糊处理。
68.之后通过实例化bitmap对象blurbitmap用于存储对预览帧对象preview进行模糊处理后的数据,然后通过自定义算法对blurbitmap和previewbitmap指定区域进行再次处理,以将最终的模糊数据保存在blurbitmap对象中,从而就可以从相机预览中看到当前照片的景深效果。
69.然而上述二次处理方案,实则上是为了能使模拟景深效果的处理过程,得以在cpu上顺利进行,而不依赖于gpu性能,为此本案优选使用renderscript方式来实现高斯模糊处理,如通过命令:
70.db shell setprop debug.rs.default

cpu

driver 1//以强制高斯模糊处理过程在cpu上进行。
71.具体来说,在可能的优选实施方式中,本案通过设置renderscript来调用cpu使用
虚化系数对待虚化位图数据进行高斯模糊处理计算,其主要步骤包括:
72.s31通过allocation类内置createfrombitmap方法从待虚化位图创建一个分配input对象;
73.s32通过allocation类内置createtyped方法创建一个分配output对象,类型为input类型;
74.s33调用renderscript类内置setradius方法设置模糊的程度;把创建的分配input对象作为renderscript类内置setlnput方法的参数,设置模糊的输入分配;
75.s34把创建的分配output对象作为renderscript类内置foreach方法的参数,将筛选器应用到输入分配并保存到分配output中;
76.s35调用allocation类内置copyto方法从分配output对象中复制到bitmap,以获得虚化位图数据。
77.示例如:
78.[0079][0080]
经过上述步骤处理,获取虚化位图数据后,通过自定义算法就可以进入再次处理的环结,其中该处理程序为了实现两个目的,其一是焦点区的像素替换,其二是渐变虚化区
的像素替换。
[0081]
首先定义该自定义算法参数包括:虚化位图数据a,原图位图数据b,焦点区坐标,外圆半径outradius,内圆半径inradius。
[0082]
其次算法中以虚化位图数据a为基础图,在遍历虚化位图数据a和原图位图数据b的像素点时,设定三种处理过程:
[0083]
1)内圆内部的区域以原图位图数据b数据的焦点区内像素,替换虚化位图数据的焦点区内像素,即形成景深效果中清晰的部分;
[0084]
2)外圆以外的区域不做处理,依然使用虚化位图数据a的像素点;
[0085]
3)外圆与内圆非重叠部分,即定义为圆环的部分,其所对应的区域,根据到圆心距离不同,实现像素点叠加的渐变效果,如:
[0086]
31)依据像素点到焦点区中心的距离计算线性渐变虚化系数s,s=(temp

inradius)/(float)(outradius

inradius),s的值范围[0,1];其中temp像素点到圆心的距离;inradius为内圆半径;outradius为外圆半径;s为像素渐变系数。
[0087]
32)计算线性叠加公式f=a*s+b*(1

s),以替换虚化位图数据的渐变虚化区内像素。其中a为虚化位图像素点;b为原图位图像素点;s为内外圆半径中间环形区域像素渐变系数;f为根据渐变系数模糊的像素点。(图片是由像素点组成,每个像素点有对应的rgba值。rgba是代表red(红色)green(绿色)blue(蓝色)和alpha的色彩空间。alpha通道一般用作不透明度参数。)
[0088]
rgba分别代入公式:
[0089]
红色r:f(r)=a(r)*s+b(r)*(1

s);
[0090]
绿色g:f(g)=a(g)*s+b(g)*(1

s);
[0091]
蓝色b:f(b)=a(b)*s+b(b)*(1

s);
[0092]
alpha:f(a)=a(b)*s+b(b)*(1

s);
[0093]
举例说明:
[0094]
当圆环中像素点到圆心的距离于内圆半径inradius为0.1时,s为0.1。
[0095]
虚化位图数据a中像素点a1:rgba(100,100,100,100)。
[0096]
原图位图数据b中像素点b1:rgba(150,150,150,150)。
[0097]
通过线性公式:f=a*0.1+b*(1

0.1);f=a*0.1+b*0.9;计算得出渐变模糊像后素点f1:rgba(145,145,145,145);像素点f1的rgba的值与b1更接近,说明圆环中的像素点靠近内圆的,越趋近于原图位图数据b对应的像素。
[0098]
当像素点到圆心的距离与外圆半径outradius为0.9时,s为0.9.
[0099]
虚化位图数据a中像素点a2:rgba(50,50,50,50)
[0100]
原图位图数据b中像素点b3:rgba(120,120,120,120)
[0101]
通过线性公式:
[0102]
f=a*0.9+b*(1

0.9);
[0103]
f=a*0.9+b*0.1:
[0104]
渐变模糊像后素点f2:rgba(57,57,57,57);
[0105]
像素点f2的rgba的值与a2更接近,说明圆环中的像素点靠近外圆的,越趋近于虚化位a对应的像素。
[0106]
最终效果如图4所示,越靠近圆心位置的像素,越趋近于原图位图数据b对应的像素;越远离圆心位置的像素,越趋近于虚化位图数据a对应的像素。
[0107]
示例如:
[0108]
[0109]
[0110]
[0111][0112]
此外,本发明提供的上述模拟景深效果的拍照方法,还能够适配现有采用安卓系统的移动终端,即当移动终端启动拍照程序时,该移动终端将执行上述实施例中的模拟景深效果的拍照方法的步骤。
[0113]
进一步的,如图5所示,本发明示例了一种能够适配上述模拟景深效果的拍照方法的移动终端的结构,优选的,该移动终端采用安卓系统,其包括:摄像头,控制器,处理器,显示器,存储器,其中,所述存储器中存有预设的位图数据的渐变虚化区、焦点区、渐变虚化系数s及虚化系数;所述控制器用于收到模拟景深事件被触发时,令处理器调用camera类的open方法打开摄像头并得到camera实例对象;定义textureview并使用其作为camera预览显示的view;实例化surfacetexturelistener类并通过setsurfacetexturelistener方法
设置给textureview,当textureview视图可用时,回调surfacetexturelistener类的onsurfacetextureavailable方法获取到surfacetexture纹理对象;把获取到的纹理对象作为setpreviewtexture方法的参数设置给camera对象,textureview成功显示camera预览数据;调用textureview类内置的getbitmap方法获取到camera的实时预览帧bitmap位图数据,以此捕获摄像头预览帧作为待虚化位图数据及原图位图数据b,并调用renderscript命令调用处理器使用存储器中的虚化系数对待虚化位图数据进行高斯模糊处理计算,以获取虚化位图数据a,并以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;同时处理器计算公式f=a*(1

s)+b*s,以处理原图位图数据中的渐变虚化区,来获取渐变模糊像素f,并用来替换虚化位图数据的渐变虚化区内像素,获取景深预览帧,以向显示器传输令其示出。
[0114]
进一步的,在另一示例中,该采用安卓系统的移动终端,其包括:摄像头,控制器,处理器,显示器,存储器,其中,所述存储器中存有预设的位图数据的渐变虚化区、焦点区、渐变虚化系数s及虚化系数;所述控制器用于收到模拟景深事件被触发时,令处理器捕获摄像头预览帧作为待虚化位图数据及原图位图数据b,其中处理器通过调用allocation类内置createfrombitmap方法从待虚化位图创建一个分配input对象,通过allocation类内置createtyped方法创建一个分配output对象,类型为input类型,调用renderscript类内置setradius方法设置模糊的程度,把创建的分配input对象作为renderscript类内置setlnput方法的参数,设置模糊的输入分配,并把创建的分配output对象作为renderscript类内置foreach方法的参数,将筛选器应用到输入分配并保存到分配output中;调用allocation类内置copyto方法从分配output对象中复制到bitmap,以获得虚化位图数据a,并以原图位图数据的焦点区内像素,替换虚化位图数据的焦点区内像素;同时处理器计算公式f=a*(1

s)+b*s,以处理原图位图数据中的渐变虚化区,来获取渐变模糊像素f,并用来替换虚化位图数据的渐变虚化区内像素,获取景深预览帧,以向显示器传输令其示出。
[0115]
综上所述,本发明提供的该模拟景深效果的拍照方法及其移动终端,能够利用现有高斯模糊技术手段来模拟相机景深效果,使得没有长焦镜头的移动终端也能具备景深拍摄效果,降低了景深拍摄效果的硬件门槛。此外鉴于现有技术采用opengl模拟景深效果时,过于依赖gpu算力的缺陷,本方案则采用textureview捕获相机预览帧的手段,获取带虚化位图数据与原图位图数据,以供后续结合先处理出虚化位图数据,再与处理后的原图位图数据进行融合的两次处理方案,能够适用于仅调用cpu来进行处理,从而降低对gpu性能依赖的同时,提高处理后的预览帧的fps值,使得部分gpu性能较弱但cpu性能富余的移动终端,能获得较好的使用体验。
[0116]
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0117]
本领域技术人员可以理解,除了以纯计算机可读程序代码方式实现本发明提供的
系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0118]
此外实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0119]
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1