一种基于iOS系统的多宫格图片处理方法及装置与流程

文档序号:12915750阅读:278来源:国知局
一种基于iOS系统的多宫格图片处理方法及装置与流程

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



背景技术:

在当前时尚流行的图片展示上,九宫切图是当下最流行的一种,一张非常普通的照片经过了处理,变成非常漂亮的九宫图片。九宫格的图片展示方式非常契合人的视觉审美,因此非常适合人物、风景以及商品的展示。但是,由于苹果(apple)移动终端使用的ios系统的闭源特性,导致众多个性化需求无法被满足,其中之一就是九宫格的图片处理功能。

虽然现有的ios系统仅提供针对单个图片的图片处理技术,然而ios系统中未提供生成九宫格图片展现方式的图片处理技术,需要对ios系统进行定制化开发以实现九宫格图片的展现。

由于ios系统中缺乏针对九宫格的图片处理技术,用户为了生成九宫格图片,需要逐个对组成九宫格图片中的单张图片进行单独处理,整个过程重复进行多次,导致占用了大量手机资源和网络流量,不仅严重影响了移动终端的系统性能,而且用户体验较差。



技术实现要素:

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

本发明的技术方案是提供一种基于ios系统的多宫格图片处理方 法,该方法包括:利用界面图形控件获取第一图片数据;将所述第一图片数据转换为第二图片数据;根据所述第二图片数据生成与屏幕尺寸相应的多宫格图片。

可选地,所述界面图形控件为uiimageview,所述第一图片数据为uiimage对象,所述第二图片数据为cgimage对象。

可选地,在将所述第一图片数据转换为第二图片数据的步骤之后,还包括:获取第二图片的长度和宽度,将所述第二图片数据存储于内存中。

可选地,生成与屏幕尺寸相应的多宫格图片利用如下计算公式:

px=(l-d1-d2)/n其中,

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

可选地,在根据所述第二图片数据生成与屏幕尺寸相应的多宫格图片的步骤之后,还包括:生成不同ios版本的系统所需的多种比例的像素图。

可选地,所述多宫格图片包括但不限于单列、双列、多行多列布局。

可选地,所述多种比例的像素图包括但不限于:1:1原图、3倍图、2倍图、缩略图。

本发明还提供一种基于ios系统的多宫格图片处理装置,所述装置包括:

图片获取模块,用于利用界面图形控件获取第一图片的数据;

图片转换模块,用于将所述第一图片的数据转换为第二图片的数据;

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

可选地,所述界面图形控件为uiimageview,所述第一图片为uiimage对象,所述第二图片为cgimage对象。

可选地,所述装置还包括:数据存储模块,其中,通过所述图片获取模块获取第二图片的长度和宽度,将所述第二图片的数据存储于所述数据存储模块中。

可选地,生成与屏幕尺寸相应的多宫格图片利用如下计算公式:

px=(l-d1-d2)/n其中,

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

可选地,所述图片生成模块还用于:根据不同业务类型生成多种比例像素图。

可选地,所述多宫格图片包括但不限于单列、双列、多行多列布局。

可选地,所述多种比例的像素图包括但不限于:1:1原图、3倍图、2倍图、缩略图。

通过本发明提供的基于ios系统的多宫格图片处理方法及装置,能够使ios系统实现多宫格的图片处理的功能。根据该功能的实现,有效解决了使用多宫格图片展现时,减少了图片处理任务对系统资源 的占用和网络流量的使用,同时能够适应不同屏幕尺寸以及兼容不同ios版本的移动终端设备。

附图说明

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

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

图2为本发明还提供的基于ios系统的多宫格图片处理装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

如图1所示,为本发明提供的一种基于ios系统的多宫格图片处理方法流程图,该方法包括:

步骤s101:利用界面图形控件获取第一图片数据;

步骤s102:将所述第一图片数据转换为第二图片数据;

步骤s103:根据所述第二图片数据生成与屏幕尺寸相应的多宫格图片。

可选地,所述界面图形控件为uiimageview,所述第一图片数据为uiimage对象,所述第二图片数据为cgimage对象。

可选地,在将所述第一图片数据转换为第二图片数据的步骤之后,还包括:获取第二图片的长度和宽度,将所述第二图片数据存储于内存中。

可选地,生成与屏幕尺寸相应的多宫格图片利用如下计算公式:

px=(l-d1-d2)/n其中,

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

可选地,在根据所述第二图片数据生成与屏幕尺寸相应的多宫格图片的步骤之后,还包括:生成不同ios版本的系统所需的多种比例的像素图。

可选地,所述多宫格图片包括但不限于单列、双列、多行多列布局。

可选地,所述多种比例的像素图包括但不限于:1:1原图、3倍图、2倍图、缩略图。

下面结合一个具体实施例对本发明进行具体描述,然而值得注意的是该具体实施例仅是为了更好地描述本发明,并不构成对本发明的不当限定。

用户使用ios系统的任意移动终端,需要将某个图片或任意多个图片生成九宫格或者其他多宫格图片时。

首先,利用ios系统提供的界面图形控件(uiimageview)获取待处理的第一图片(以下简称uiimage对象)。把uiimage对象转换为能够被核心图形库(coregraphics)调用的第二图片(以下简称cgimage对象)。值得一提的是,在本发明的实施例中,针对ios系统处理图片的控件并不限于上述形式。同时,得到待处理的图片的宽度和高度。具体来说,由于使用的是rgb颜色空间模式,因此,首先需要定义一些参数bytesperpixel(每个像素大小)和bitspercomponent(每个颜色通道大小)。然后,计算该第二图片的bytesperrow(每行有多大)。最后,使用一个内存数组(nsarray)存储像素的值。

然后,创建一个rgb模式的颜色空间(cgcolorspace)和一个容器(cgbitmapcontext),将像素指针参数传递到该容器(cgbitmapcontext)中进行存储。

最后,基于存储的像素的值,针对不同的屏幕尺寸,生成对应的多宫格图片。

具体来说,首先定义像素的填充格式。然后,遍历存储图片的像素数组,将像素复制到该容器中,针对不同的屏幕尺寸,产生基于像素的等比例的对应屏幕尺寸的多宫格图片,同时生成系统所需的多种比例的像素图,具体尺寸及比例根据业务需要而定。

如图2所示,是本发明提供处理多宫格图片的一个实施例。

如果以移动终端的屏幕中显示5列图片为例,具体实现方法如下:

针对不同版本的iphone手机,获取相应版本的iphone手机的屏幕宽度(像素px),并设:手机屏幕两侧留白28*2=56px,图片间距6*4=24px。

具体的计算方式如下:

对于5.5寸屏:屏幕宽度(1242-56-24)/5=232.4px,则每张图片大小为长232.4px、宽232.4px;

对于4.7寸屏:屏幕宽度(750-56-24)/5=134px,则每张图片大小为长134px、宽134px;

对于4.0寸屏:屏幕宽度(640-56-24)/5=112px,则每张图片大小为长112px、宽112px;

由上述计算方法可知,通过设定屏幕两侧留白和图片间距,可以任意设定每行图片的排列数量。至于列数则是根据图片的数量/每行图片的个数,不能整除+1行即可得到。

在生成多宫格的图片之后,最后在根据多宫格中图片之间的间距以及图片与屏幕的边距在设定之后不变的情况下,动态计算对应图片的大小以及压缩比例。

另外,由于不同业务需要,还需要生成多种比例的像素图。

例如,分别生成1:1原图、3倍图、2倍图、缩略图。具体调整方法为:

横向缩小n倍:nsintegertargetghostwidth=inputwidth*n;

纵向缩小n倍:nsintegertargetghostheight=inputwidth*n。

其中,inputwidth表示生成不同版本对应的多宫格图,n表示缩放倍数,nsintegertargetghostwidth表示缩放后的图片尺寸。

针对市面上不同的ios版本,还需要分别进行版本兼容的。

1、针对ios7之前的版本需要手动编写布局及图片位置。适配方法通过如下代码即可实现:

2、针对ios7以上版本可以使用autolayout自动布局,并在nib中使用约束。由于该适配方法是本领域普通技术人员能够实现的,故在此不详细描述。

如图2所示,为本发明还提供一种基于ios系统的多宫格图片处理装置2,所述装置2包括:

图片获取模块21,用于利用界面图形控件获取第一图片的数据;

图片转换模块22,用于将所述第一图片的数据转换为第二图片的数据;

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

可选地,所述界面图形控件为uiimageview,所述第一图片为uiimage对象,所述第二图片为cgimage对象。

可选地,所述装置还包括:数据存储模块24,其中,通过所述图片获取模块获取第二图片的长度和宽度,将所述第二图片的数据存储于所述数据存储模块中。

可选地,生成与屏幕尺寸相应的多宫格图片利用如下计算公式:

px=(l-d1-d2)/n其中,

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

可选地,所述图片生成模块23还用于:根据不同业务类型生成多 种比例像素图。

可选地,所述多宫格图片包括但不限于单列、双列、多行多列布局。

可选地,所述多种比例的像素图包括但不限于:1:1原图、3倍图、2倍图、缩略图。

通过对本发明的提供基于ios系统的多宫格图片处理装置进行封装可以生成多宫格图片处理工具包(sdk),其中该工具包具有如下功能,具体包括:提供对外可访问的统一接口、提供图片处理功能模块、提供多屏幕适配功能模块、提供多版本兼容功能模块。

当用户调用该工具包时,将工具包(sdk)集成到要使用的程序中,在处理图片时调用工具包(sdk)对外提供的方法,获取工具包(sdk)返回给九宫格图片展现效果。

由于本发明提供的一种基于ios系统的多宫格图片处理装置是上述方法对应的装置,故不在此赘述。

通过本发明提供的基于ios系统的多宫格图片处理方法及装置,能够使ios系统实现多宫格的图片处理的功能。根据该功能的实现,有效解决了使用多宫格图片展现时,减少了图片处理任务对系统资源的占用和网络流量的使用,同时能够适应不同屏幕尺寸以及兼容不同ios版本的移动终端设备。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。

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