一种图片的显示方法及装置的制造方法_2

文档序号:8413131阅读:来源:国知局
、旋转和显示速度。另外,基于以 上旋转方案,本发明实施例还提出一种图像缩略图的快速同步方法,避免了重新获取缩略 图的耗时操作。
[0030] 需要说明的是,在本发明实施例中,位图即bitmap,是指图片被转换之后的在终端 的一种保存方式,可见,本发明实施例中的bitmap是代码中的bitmap,并非某种类型的图 片。还需要说明的是,本发明实施例可以应用于各种格式的图片。
[0031] 图1示出了本发明实施例提供的一种图片的显示方法的流程示意图,如图1所示, 该流程具体包括:
[0032] 步骤11 :接收用于显示图片的指令。
[0033] 步骤12 :根据指令中所包含的待显示图片的标识,获取待显示图片的原始位图, 并在预设当前设备的数据库中查找与待显示图片对应的预先存储的第一旋转角度。
[0034] 步骤13 :根据当前屏幕的分辨率和/或当前窗口大小,调整待显示图片的原始位 图的显示尺寸,得到原始位图的压缩位图。
[0035] 步骤14 :按照查找到的第一旋转角度显示原始位图的压缩位图。
[0036] 可选的,在上述步骤11~14中,通过如下步骤存储或更新图片的第一旋转角度: 对于已显示图片,在接收到用于调整已显示图片的第二旋转角度的旋转指令后,根据该图 片的第一旋转角度与第二旋转角度之和,更新在当前设备的数据库中与该图片对应的第一 旋转角度;对于未显示图片,在接收到用于调整未显示图片的第二旋转角度的旋转指令后, 在当前设备的数据库中查找与该图片对应的预先存储的第一旋转角度,并根据该图片的第 一旋转角度和第二旋转角度之和,更新在当前设备的数据库中与该图片对应的第一旋转角 度。
[0037] 可选的,在上述步骤14中,按照计算出的显示角度对原始位图的压缩位图进行图 片旋转操作;根据当前屏幕的分辨率/或当前窗口大小,调整旋转操作后的原始位图的压 缩位图的显示尺寸,得到适配窗口位图;并显示适配窗口位图。
[0038] 可选的,在上述步骤11~步骤13中,根据各图片的原始位图和预设缩放比例,按 照各图片在当前设备的数据库中的第一旋转角度,生成各图片的缩略图,并将已生成的缩 略图保存到预先建立的图片缓存器中。
[0039] 可选的,在上述步骤11~步骤13中,当需要显示图片的缩略图时,从图片缓存器 中获取并显示图片的缩略图。
[0040] 下面对本发明实施例进行详细描述。
[0041] 本发明实施例提供的图像的显示方法可以包括图像旋转流程、图像拉伸流程、图 像显示流程和缩略图更新及显示过程等。其中,本发明实施例提供了一种新颖的图像旋转 方式,实现图像的旋转仅限于当前的显示设备,而不改变图像自身属性中的角度,从而有效 地避免了图像在使用过程中被破坏;由于图像的旋转不再基于原始图像本身,而是基于当 前窗口图像旋转,从而保证旋转操作内存耗费小;另外,本发明实施例还能够将各图像的 缩略图统一存储在图片缓存器LruCache中,在进行旋转操作后,利用该旋转后的角度对 LruCache中的缩略图旋转,避免重新获取原始图像,实现了缩略图的快速同步。可见,本发 明实施例不仅增加了图像显示和显示的灵活性;还能保护图像的自身属性,保证原始图片 的分辨率免受破坏;进而提高了当前显示端的运行速度,降低了内存占用率。
[0042] 图2示出了本发明实施例提供的一种对于未显示图片的图像旋转方法的流程示 意图,其中,本发明实施例以智能电视作为当前显示端为例进行描述,如图2所示,该流程 可以包括:
[0043] 步骤21 :智能电视接收到用于调整未显示图片的第二旋转角度的旋转指令。
[0044] 步骤22 :智能电视在当前设备的数据库中查找与该未显示图片对应的预先存储 的第一旋转角度。
[0045] 具体实现时,在本发明实施例中,未被旋转的图片的第一旋转角度可以默认设置 为0。。
[0046] 步骤23 :智能电视根据该图片的第一旋转角度和第二旋转角度之和,更新在当前 设备的数据库中与该图片对应的第一旋转角度。
[0047] 在对未显示图片的进行图像旋转之后,可以继续执行本发明实施例提供的图像显 示方法,图3示出了本发明实施例提供的一种图像显示方法的流程示意图,如图3所示,该 流程可以包括:
[0048] 步骤31 :智能电视接收用于显示图片的指令。
[0049] 步骤32 :智能电视根据指令中所包含的待显示图片的标识,获取待显示图片的原 始位图。
[0050] 具体实现时,本发明实施例仅以举例的方式提供了显示图像的代码,其具体为:
[0051] mPictureOrientation = mCursor. getlnt(mCursor
[0052] . getColumnlndex(MediaDataContract. Media. Columns. ORIENTATI ON));
[0053] 其中,mCursor中包含从当前设备的数据库中获取的图像的相关信息;
[0054] 步骤33 :智能电视在当前设备的数据库中查找与待显示图片对应的预先存储的 第一旋转角度。
[0055] 步骤34 :智能电视根据当前屏幕的分辨率和/或当前窗口大小,调整待显示图片 的原始位图的显示尺寸,得到原始位图的压缩位图。
[0056] 步骤35 :智能电视根据查找到的第一旋转角度,计算待显示图片在当前屏幕上的 显不角度。
[0057] 具体实现时,本发明实施例仅以举例的方式提供了计算显示角度的代码,其具体 为:
[0058] int rotatedDegree = mPictureOrientation+(mRotateFactor% 4) *90 ;
[0059] int newOrientation = rotatedDegree% 360 ;
[0060] if(new0rientation<0){
[0061] newOrientation = (4-Math, abs(rotatedDegree/90))*90 ;
[0062] }
[0063] 其中,mRotateFactor为旋转因子,顺时针按键一下加1。
[0064] 步骤36 :智能电视按照计算出的显示角度显示原始位图的压缩位图。
[0065] 具体实现时,本发明实施例仅以举例的方式提供了显示压缩位图的代码,其具体 为:
[0066] matrix. postRotate(rotatedDegree);
[0067] newBmp = Bitmap. createBitmap(bitmap, 0, 0, w, h, matrix, true);
[0068] view. setAdjustViewBounds(true);
[0069] view. setMaxffidth(mDisplayffidth);
[0070] view. setMaxHeight(mDisplayHeight>h ? mDisplayHeight:h);
[0071] view. setlmageBitmap(newBmp);
[0072] 其中,bitmap为当前窗口图像的bitmap,matrix为一个Matrix对象,w和h为显 示器的分辨率,view为显示图像的ImageView 0
[0073] 需要说明的是,上述代码仅作
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1