一种多宫格图片处理方法和装置以及一种电子设备与流程

文档序号:16268576发布日期:2018-12-14 22:05阅读:241来源:国知局
一种多宫格图片处理方法和装置以及一种电子设备与流程

本发明涉及图形图像处理及计算机软件领域,具体涉及一种基于安卓系统的多宫格图片处理方法和装置,以及一种电子设备。

背景技术

在当前时尚流行的图片展示上,多宫格图片是当下最流行的一种。一张非常普通的照片(图片)经过处理,可以变成非常漂亮的九宫图片(多宫格图片的一种)。并且,多宫格图片的展示方式非常契合人的视觉审美,因此非常适合人物、风景以及商品的展示。

安卓系统,即android系统,是美国谷歌(google)公司开发的一种开源移动终端系统。由于其开源理念,由世界多个公司、组织对其进行了深度定制,从而形成针对各类终端(不仅仅局限于移动终端)的控制和显示的系统,并提供强大的管理功能。进而,安卓系统已经广泛地应用于各个领域。

虽然现有的安卓系统提供了针对单个图片的图片处理技术,然而安卓系统中并未提供生成多宫格图片展现方式的图片处理技术。现有技术中,由于安卓系统中缺乏针对多宫格图片的处理技术,用户为了生成多宫格图片,则必须逐个对组成多宫格图片中的单张图片进行单独处理,整个过程重复进行多次,严重影响了终端的系统性能和用户体验,同时也导致众多个性化需求无法被满足,影响了其在各个领域中的进一步深度定制和推广。



技术实现要素:

有鉴于此,本发明提供一种基于安卓系统的多宫格图片处理方法及装置,以针对安卓系统实现多宫格的图片处理的功能。

本发明的技术方案是这样实现的:

一种多宫格图片处理方法,所述方法基于安卓系统,所述包括:

利用所述安卓系统的intent方法获取原始图片数据;

将所述原始图片数据转换为bitmapimage对象数据;

根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

进一步,在将所述原始图片数据转换为bitmapimage对象数据之后,在根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片之前,所述方法还包括:

在内存中划分用于存储所述bitmapimage对象数据的区域,并将所述bitmapimage对象数据存储于该区域。

进一步,根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片的步骤,包括:

将所述bitmapimage对象数据还原成像素队列;

对所述像素队列进行比例缩放;

生成与屏幕尺寸相应的多宫格图片。

进一步,将所述bitmapimage对象数据还原成像素队列的步骤,包括:

创建一个rgb模式的颜色空间colorspace和一个bitmapcontext容器;

采用遍历的方法将所述内存中的bitmapimage对象数据复制到所述bitmapcontext容器中;

调用安卓系统的colorspace所提供的setbitmapimage()方法,将所述bitmapimage对象数据还原为基于像素的等比例图片。

进一步,对所述像素队列进行比例缩放,是将该像素队列按照其所对应的图片的长度和宽度进行等比例缩放。

进一步,利用以下公式生成与屏幕尺寸相应的多宫格图片:

px=(l)-d1-d2/n

其中,px为所述多宫格中每张图片的长度和宽度,l为与所述屏幕尺寸对应的分辨率,d1为所述屏幕两侧的留白宽度,d2为所述多宫格中相邻图片之间的间距,n为所述多宫格中图片的列数。

进一步,所述屏幕尺寸对应的分辨率通过如下方法获取:

调用windowmanager类的getsystemservice()方法获取当前系统的windowmanager对象;

调用windowmanager对象的getdefaultdisplay().getwidth()方法获取当前设备屏幕的宽度值;

调用windowmanager对象的getdefaultdisplay().getheight()方法获取当前设备屏幕的高度值;

将所述当前设备屏幕的宽度值和当前设备屏幕的高度值相乘以获得所述屏幕尺寸对应的分辨率。

进一步,在所述方法之前还包括:

获取当前安卓系统的版本号以兼容相应版本的安卓系统。

进一步,所述多宫格图片的布局包括单列布局、双列布局、多行多列布局。

进一步,所述多宫格图片包括:1:1原图、3倍图、2倍图、缩略图。

一种多宫格图片处理装置,所述装置基于安卓系统,所述装置包括:

图片获取模块,用于利用所述安卓系统的intent方法获取原始图片数据;

图片转换模块,用于将所述原始图片数据转换为bitmapimage对象数据;

图片生成模块,用于根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

进一步,所述装置还包括:

数据存储模块;其中,

利用所述图片获取模块获取bitmapimage对象数据的长度和宽度,将所述bitmapimage对象数据的数据存储于所述数据存储模块中。

进一步,利用以下公式生成与屏幕尺寸相应的多宫格图片:

px=(l)-d1-d2/n

其中,px为所述多宫格中每张图片的长度和宽度,l为与所述屏幕尺寸对应的分辨率,d1为所述屏幕两侧的留白宽度,d2为所述多宫格中相邻图片之间的间距,n为所述多宫格中图片的列数。

进一步,所述多宫格图片的布局包括单列布局、双列布局、多行多列布局。

进一步,所述多宫格图片包括:1:1原图、3倍图、2倍图、缩略图。

一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述一个处理器执行的指令,所述指令被被所述至少一个处理器执行,以使所述至少一个处理器能够:

利用安卓系统的intent方法获取原始图片数据;

将所述原始图片数据转换为bitmapimage对象数据;

根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

从上述方案可以看出,本发明的多宫格图片处理方法和装置以及电子设备,使得安卓系统实现多宫格的图片处理的能力。解决了现有技术中用户在安卓系统中生成多宫格图片时对系统性能的影响,降低了用户利用安卓系统生成多功个图片时操作的复杂程度,并改善了用户体验,满足了用户的个性化需求。同时本发明能够适应不同屏幕尺寸以及兼容不同安卓版本的移动终端设备,使其能够随各种深度定制的安卓系统而广泛应用。

附图说明

图1为本发明的基于安卓系统的多宫格图片处理方法的流程图;

图2为本发明方法中生成与屏幕尺寸相应的多宫格图片步骤的流程图;

图3为本发明提供的基于安卓系统的多宫格图片处理装置的结构图;

图4为本发明提供的一种电子设备实施例结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。

如图1所示,本发明实施例的一种基于安卓系统的多宫格图片处理方法,包括以下步骤:

步骤1、利用所述安卓系统的intent方法获取原始图片数据;

步骤2、将所述原始图片数据转换为bitmapimage对象数据;

步骤3、根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

结合实际的硬件操作,本发明实施例中,在步骤2执行完毕之后,并在步骤3执行之前,本发明实施例的基于安卓系统的多宫格图片处理方法还包括:

在内存中划分用于存储所述bitmapimage对象数据的区域,并将所述bitmapimage对象数据存储于该区域。

本发明实施例中,参见2所示,步骤3具体包括:

步骤31、将所述bitmapimage对象数据还原成像素队列;

步骤32、对所述像素队列进行比例缩放;

步骤33、生成与屏幕尺寸相应的多宫格图片。

其中,步骤31进一步包括:

创建一个rgb模式的颜色空间colorspace和一个bitmapcontext容器;

采用遍历的方法将所述内存中的bitmapimage对象数据复制到所述bitmapcontext容器中;

调用安卓系统的colorspace所提供的setbitmapimage()方法,将所述bitmapimage对象数据还原为基于像素的等比例图片。

步骤32中,是将该像素队列按照其所对应的图片的长度和宽度进行等比例缩放。

步骤33中,利用以下公式生成与屏幕尺寸相应的多宫格图片:

px=(l)-d1-d2/n

其中,px为所述多宫格中每张图片的长度和宽度,l为与所述屏幕尺寸对应的分辨率,d1为所述屏幕两侧的留白宽度,d2为所述多宫格中相邻图片之间的间距,n为所述多宫格中图片的列数。

其中,l即所述屏幕尺寸对应的分辨率通过如下方法获取:

调用windowmanager类的getsystemservice()方法获取当前系统的windowmanager对象;

调用windowmanager对象的getdefaultdisplay().getwidth()方法获取当前设备屏幕的宽度值;

调用windowmanager对象的getdefaultdisplay().getheight()方法获取当前设备屏幕的高度值;

将所述当前设备屏幕的宽度值和当前设备屏幕的高度值相乘以获得所述屏幕尺寸对应的分辨率,即l。

本发明实施例中,在执行步骤1之前,还包括:

获取当前安卓系统的版本号以兼容相应版本的安卓系统。

本发明实施例中,所述多宫格图片的布局包括单列布局、双列布局、多行多列布局。

本发明实施例中,所述多宫格图片包括:1:1原图、3倍图、2倍图、缩略图。

在具体应用时,本发明的基于安卓系统的多宫格图片处理方法主要包括一下过程。

一、获取用户图片的过程,主要包括:

1)图片加载

使用安卓系统提供的系统方法intent方法,获取指定设备中,例如手机中的相册图片对象image。

安卓系统中的intent是一个非常重要且常用的类,可以使用intent提供的startactivityforresult()方法,获取安卓系统提供的相册中的用户图片。

2)转换图片对象

将image对象转换为可以被安卓系统核心图形库调用的bitmapimage对象。在安卓系统中,bitmapimage将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:

1024×768×32/(8×1024)=3072kb

bitmapimage对象是一种比image更符合计算机识别的对象,专业描述为:更接近二进制的底层对象。并且在bitmapimage对象上进行的任何操作,均不会影响原image对象。

3)将图片缓存到内存

在设备内存中划分一块区域用于存储新生成的bitmapimage对象,即位图。通常情况下,会在内存中创建一个可变的数组存储。

在内存中处理bitmapimage对象的优势是不仅速度快、并且可以反复处理。

二、处理图片生成多宫格图片的过程,主要包括:

1)将bitmapimage对象还原成像素队列

由于直接修改bitmapimage对象的宽、高比例会导致图片的失真、模糊等问题,所以不能直接修改bitmapimage对象。需要将bitmapimage对象还原成像素列表才能进行修改。还原bitmapimage的方法是:

首先,创建一个rgb模式的颜色空间colorspace和一个bitmapcontext容器。

其次,使用遍历的方法将内存中的bitmapimage对象数组素复制到容器中。

最后,调用colorspace提供的setbitmapimage()方法,将bitmapimage还原为基于像素的等比例图片。

需要说明的是,一张图片是由若干个像素点排列后构成,每个像素点有不同的色值,通过像素点的排列产生一张图片。所以修改像素列表内的像素是不会导致图片的失真、模糊等问题。

2)对像素队列进行比例缩放

由于新产生的像素队列,在改变大小时不会失真。所以可以对像素队列进行任意缩放。

例如:整体缩放0.25倍的方法如下:

横向缩小0.25倍:

nsintegertargetghostwidth=inputwidth*0.25

纵向缩小0.25倍:

nsintegertargetghostheight=inputwidth*0.25

备注:常用多宫格图片包括但不限于1:1原图、2倍图、3倍图、缩略图等。

3)生成多宫格图片

生成与屏幕尺寸相应的多宫格图片采用如下计算公式:

px=(l)-d1-d2/n

其中,px为多宫格中每张图片的长度和宽度,l为与屏幕尺寸对应的分辨率(屏幕分辨率等于屏幕宽度*屏幕高度),d1为屏幕两侧的留白宽度,d2为多宫格中相邻图片之间的间距,n为多宫格中图片的列数。其中,d1、d2、n由用户根据需要自行设定,l通过屏幕宽度、高度计算所得。

备注:多宫格图片包括但不限于单列、双列、多行多列等布局。

三、对不同屏幕尺寸的手机进行适配的过程,包括:

鉴于不同厂商生产的安卓手机的屏幕尺寸及分辨率的差异。不同屏幕尺寸及分辨率的手机所生成的多宫格图片的尺寸也有差异。比较常见的屏幕尺寸分辨率例如4.0英寸屏幕分辨率640*1136、4.7英寸屏幕分辨率750*1134、5.5英寸屏幕分辨率1080*1920等。

针对不同屏幕尺寸及分辨率的安卓手机的适配方法包括:

首先,调用windowmanager类的getsystemservice()方法,获取当前系统的windowmanager对象。

其次,调用windowmanager对象的getdefaultdisplay().getwidth()方法获取当前手机的宽度值,即width值;

调用windowmanager对象的getdefaultdisplay().getheight()方法获取当前手机的高度值,即height值;

最后,将获得的width值、height值当中参数带入公式:

l=width*height

px=(l)-d1-d2/n

从而获取最终的多宫格图片。

四、对不同安卓系统版本的手机进行兼容

对于安卓系统而言,版本的向下兼容性比较差,不同版本的安卓系统其系统接口不同。新版本不能调用旧版本的接口,旧版本也调用不了新版本的接口,导致同一个生成多宫格的方法无法在不同的安卓版本间通用。

为了解决版本不同导致的问题,需要在调用多宫格生成方法之前,获取当前安卓系统的版本号,并针对不同版本进行处理。具体方法包括:

首先,安卓系统提供了一个常量类build,通过调用build的version.sdk_int属性可以获得当前系统的版本号。

其次,基于大于等于4.0版本的安卓系统,可以直接调用步骤三的方法。

针对小于4.0版本的安卓系统,由于4.0以下的版本不支持自动布局,需要将actionbar类的setdisplayhomeasupenabled(true)手动加入系统的启动文件中。

本发明实施例还提供了一种基于安卓系统的多宫格图片处理装置1,如图3所示,所述装置包括图片获取模块11、图片转换模块12和图片生成模块13。其中,所述获取模块11用于利用所述安卓系统的intent方法获取原始图片数据。所述图片转换模块12用于将所述原始图片数据转换为bitmapimage对象数据。所述图片生成模块13用于根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

另外,所述装置还包括数据存储模块。其中,所述图片获取模块11还用于获取bitmapimage对象数据的长度和宽度,并将所述bitmapimage对象数据的数据存储于所述数据存储模块中。

本发明的基于安卓系统的多宫格图片处理装置实施例中,利用以下公式生成与屏幕尺寸相应的多宫格图片:

px=(l)-d1-d2/n

其中,px为所述多宫格中每张图片的长度和宽度,l为与所述屏幕尺寸对应的分辨率,d1为所述屏幕两侧的留白宽度,d2为所述多宫格中相邻图片之间的间距,n为所述多宫格中图片的列数。

其中,所述多宫格图片的布局包括单列布局、双列布局、多行多列布局。所述多宫格图片包括:1:1原图、3倍图、2倍图、缩略图。

本发明实施例还提供了一种电子设备,该电子设备的功能与如图3所示的装置相同。如图4所示,该电子设备包括至少一个中央处理器21、存储器22。所述存储器22和所述至少一个中央处理器21通过总线23通信连接,所述存储器22存储有可被所述至少一个中央处理器21执行的指令,当所述电子设备运行时,所述至少一个中央处理器21执行所述存储器22所存储的指令,使得所述至少一个处理器21能够执行如图1至图2所示以及如上所述的多宫格图片处理方法的流程,该流程包括:

利用安卓系统的intent方法获取原始图片数据;

将所述原始图片数据转换为bitmapimage对象数据;

根据所述bitmapimage对象数据生成与屏幕尺寸相应的多宫格图片。

本发明的多宫格图片处理方法和装置以及电子设备,使得安卓系统实现多宫格的图片处理的能力。解决了现有技术中用户在安卓系统中生成多宫格图片时对系统性能的影响,降低了用户利用安卓系统生成多功个图片时操作的复杂程度,并改善了用户体验,满足了用户的个性化需求。同时本发明能够适应不同屏幕尺寸以及兼容不同安卓版本的移动终端设备,使其能够随各种深度定制的安卓系统而广泛应用。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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