CN103546731B - 一种将Bitmap转成YUV格式的文件的方法 - Google Patents

一种将Bitmap转成YUV格式的文件的方法 Download PDF

Info

Publication number
CN103546731B
CN103546731B CN201310445610.8A CN201310445610A CN103546731B CN 103546731 B CN103546731 B CN 103546731B CN 201310445610 A CN201310445610 A CN 201310445610A CN 103546731 B CN103546731 B CN 103546731B
Authority
CN
China
Prior art keywords
yuv
bitmap
data
buf
file
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.)
Active
Application number
CN201310445610.8A
Other languages
English (en)
Other versions
CN103546731A (zh
Inventor
李小朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201310445610.8A priority Critical patent/CN103546731B/zh
Publication of CN103546731A publication Critical patent/CN103546731A/zh
Application granted granted Critical
Publication of CN103546731B publication Critical patent/CN103546731B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Color Image Communication Systems (AREA)
  • Color Television Systems (AREA)

Abstract

本发明公开了一种将Bitmap转成YUV格式的文件的方法,包括下述步骤:S1、将RGB格式的Bitmap读到内存中;S2、申请一块内存,此块内存大小是该Bitmap经过无损压缩后再解码后的大小,并且设置YUV的格式,利用scalado库的caps_createImage创建一个内存大小的对象,此对象用于创建session,caps_newSessionWithRaw用于后面对此内存进行处理的关联对象;S3、再创建一个Bitmap尺寸大小的BUF,此BUF用于保存转换YUV后的BUF的数据;S4、caps_renderAsRawToBuffer通过扫描每行Session中的数据到步骤S3创建的BUF数据中,获得到转换YUV后的BUF数据;S5、把此BUF写入到文件当中,得到转成YUV的数据。本发明YUV与RGB互相转换简单、高效;比较方便实现任意格式的YUV的转换。另外,本发明对于多种YUV格式的设置简单,代码量小而且简单。

Description

一种将Bitmap转成YUV格式的文件的方法
技术领域
本发明涉及文件色彩处理的技术领域,特别涉及一种将Bitmap转成YUV格式的文件的方法。
背景技术
位图文件(Bitmap),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。RGB是位图颜色的一种编码方法,用红、绿、蓝三原色的光学强度来表示一种颜色。
YUV主要用于优化彩色视频信号的传输,与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
目前将RGB转YUV需要对每个像素的数据进行逐一的处理,处理的数据量很大,算法也比较复杂,而且代码量也大,效率不高.而且针对不同的YUV的格式,需要同时调整算法,因为YUV格式的不同,导致RGB转换时数据处理也有不同,所以比较繁琐。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种利用Scalado库将Bitmap转成YUV格式的文件的方法。
本发明的目的通过下述技术方案实现:
本发明一种将Bitmap转成YUV格式的文件的方法,包括下述步骤:
S1、将RGB格式的Bitmap读到内存中;
S2、申请一块内存,此块内存大小是该Bitmap(位图)经过无损压缩后再解码后的大小,这样Bitmap就相当于存到内存中了,并且设置YUV的格式,利用scalado库的caps_createImage创建一个内存大小的对象,此对象用于创建session,caps_newSessionWithRaw用于后面对此内存进行处理的关联对象;
S3、再创建一个Bitmap尺寸大小的BUF,此BUF用于保存转换YUV后的BUF的数据;
S4、caps_renderAsRawToBuffer通过扫描每行Session中的数据到步骤S3创建的BUF数据中,获得到转换YUV后的BUF数据;
S5、把此BUF写入到文件当中,得到转成YUV的数据。
优选的,步骤S2中,申请一个Bitmap读到内存中的BUF尺寸大小的内存处理方法如下:
先创建一个字节流os,再把Bitmap无损压缩到该字节流中,
再把此字节流通过os.toByteArray()转换成字节数组,从而完成把Bitmap的数据读到字节数组中,此处的数据是RGBA8888格式的数据。
优选的,步骤S2中,所述设置YUV的格式具体为:在创建SESSION时设置CM_YUV422_UY1VY2,这样Scalado通过逐行扫描,并转换成YUV格式。
优选的,步骤S2中,session是用于后续对该内存的操作,类似于获取到一个句柄的作用。
优选的,步骤S3中,将数据转换成YUV格式的方法如下:
通过每行扫描内存块,来对每行的数据逐行进行YUV的转换,通过借用Scalado的接口来实现,每行的数据中的像素进行YUV的转换。
本发明相对于现有技术具有如下的优点及效果:
1、本发明YUV与RGB互相转换简单、高效;比较方便实现任意格式的YUV的转换。
2.本发明对于多种YUV格式的设置简单,代码量小而且简单。
3.本发明比对每个像素的处理要简洁,不易出错,效率也高。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所示,本实施例一种将Bitmap转成YUV格式的文件的方法,包括下述步骤:
1、将Bitmap读到内存中,因为Bitmap每个像素都是RGB格式的;
2、申请一块内存,此块内存大小是该Bitmap(位图)经过无损压缩后再解码后的大小,这样Bitmap就相当于存到内存中了,并且设置YUV的格式,利用scalado库的caps_createImage创建一个内存大小的对象,此对象用于创建session,caps_newSessionWithRaw用于后面对此内存进行处理的关联对象;此session主要是方便用于后续对该内存的操作,类似于获取到一个句柄的作用。
其中,将Bitmap读到内存中实现方式如下:
先创建一个字节流os,再把Bitmap无损压缩到该字节流中,
bitmap.compress(Bitmap.CompressFormat.JPEG,100,os);
再把此字节流通过os.toByteArray()转换成字节数组,这样就可以把Bitmap的数据读到字节数组中,注意此处的数据是RGBA8888格式的。
YUV的设置:我们只需要设置CM_YUV422_UY1VY2,在创建SESSION时设置进去,这样Scalado会通过逐行扫描,并转换成YUV格式的。这也是本申请的优势;简单而且有很多种YUV的格式,例如CM_YUV422P等等。
3、再创建一个Bitmap尺寸大小的BUF,此BUF主要用于保存转换YUV后的BUF的数据;该步骤中再创建一个Bitmap尺寸大小的BUF的方法和步骤2中所采用的方法相同。
将数据转换成YUV格式的具体的过程是:通过每行扫描内存块,来对每行的数据逐行进行YUV的转换,我们通过借用Scalado的接口来实现;每行的数据中的像素进行YUV的转换;利用其封装简单,高效。
4、通过扫描每行Session中的数据到我们第3步创建的BUF数据中,即可获得到转换YUV后的BUF数据;
5.把此BUF写入到文件当中,即可得到转成YUV的数据。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (5)

1.一种将Bitmap转成YUV格式的文件的方法,其特征在于,包括下述步骤:
S1、将RGB格式的Bitmap读到内存中;
S2、申请一块内存,此块内存大小是该Bitmap经过无损压缩后再解码后的大小,这样Bitmap就相当于存到内存中了,并且设置YUV的格式,利用scalado库的caps_createImage创建一个内存大小的对象,此对象用于创建session,caps_newSessionWithRaw用于后面对此内存进行处理的关联对象;在创建session时对YUV的格式进行设置;
S3、再创建一个Bitmap尺寸大小的BUF,此BUF用于保存转换YUV后的BUF的数据;
S4、caps_renderAsRawToBuffer通过扫描每行Session中的数据到步骤S3创建的BUF数据中,获得到转换YUV后的BUF数据;
S5、把此BUF写入到文件当中,得到转成YUV的数据。
2.根据权利要求1所述的将Bitmap转成YUV格式的文件的方法,其特征在于,步骤S2中,申请一个Bitmap读到内存中的BUF尺寸大小的内存处理方法如下:
先创建一个字节流os,再把Bitmap无损压缩到该字节流中,
再把此字节流通过os.toByteArray()转换成字节数组,从将Bitmap的数据读到字节数组中,此处的数据是RGBA8888格式的数据。
3.根据权利要求1所述的将Bitmap转成YUV格式的文件的方法,其特征在于,步骤S2中,所述设置YUV的格式具体为:在创建SESSION时设置CM_YUV422_UY1VY2,这样Scalado通过逐行扫描,并转换成YUV格式。
4.根据权利要求1所述的将Bitmap转成YUV格式的文件的方法,其特征在于,步骤S2中,Session是用于后续对该内存的操作,类似于获取到一个句柄的作用。
5.根据权利要求1所述的将Bitmap转成YUV格式的文件的方法,其特征在于,步骤S3中,将数据转换成YUV格式的方法如下:
通过每行扫描内存块,来对每行的数据逐行进行YUV的转换,通过借用Scalado的接口来实现,每行的数据中的像素进行YUV的转换。
CN201310445610.8A 2013-09-26 2013-09-26 一种将Bitmap转成YUV格式的文件的方法 Active CN103546731B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310445610.8A CN103546731B (zh) 2013-09-26 2013-09-26 一种将Bitmap转成YUV格式的文件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310445610.8A CN103546731B (zh) 2013-09-26 2013-09-26 一种将Bitmap转成YUV格式的文件的方法

Publications (2)

Publication Number Publication Date
CN103546731A CN103546731A (zh) 2014-01-29
CN103546731B true CN103546731B (zh) 2015-11-18

Family

ID=49969734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310445610.8A Active CN103546731B (zh) 2013-09-26 2013-09-26 一种将Bitmap转成YUV格式的文件的方法

Country Status (1)

Country Link
CN (1) CN103546731B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520989A (zh) * 2008-02-28 2009-09-02 无锡紫芯集成电路系统有限公司 Yuv格式和rgb格式的视频液晶显示控制的硬件集成设计
CN101867833A (zh) * 2010-06-12 2010-10-20 北京东方艾迪普科技发展有限公司 一种视频图像格式转换方法和装置
CN101923455A (zh) * 2010-09-01 2010-12-22 武汉大学 一种yuv格式的数字图像显示和分析方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520989A (zh) * 2008-02-28 2009-09-02 无锡紫芯集成电路系统有限公司 Yuv格式和rgb格式的视频液晶显示控制的硬件集成设计
CN101867833A (zh) * 2010-06-12 2010-10-20 北京东方艾迪普科技发展有限公司 一种视频图像格式转换方法和装置
CN101923455A (zh) * 2010-09-01 2010-12-22 武汉大学 一种yuv格式的数字图像显示和分析方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MPEG2 Video Encoder;Ravi Lakkundi;《http://cn.mathworks.com/matlabcentral/fileexchange/27051-mpeg2-video-encoder/content/MPEG2_Video_Encoder_MATLAB-RaviLakkundi/rgb2yuv.m》;20100323;全文 *
多媒体图像格式间的转换方式;夏传良,李盛恩;《计算机应用研究》;20051231(第10期);第162-163、187页 *

Also Published As

Publication number Publication date
CN103546731A (zh) 2014-01-29

Similar Documents

Publication Publication Date Title
TWI629892B (zh) 景深包裝及解包裝之rgb格式與yuv格式的轉換與反轉換的方法及電路
JP6937695B2 (ja) カラー・ピクチャを符号化および復号する方法および装置
US8836716B1 (en) System and method for reducing visible artifacts in the display of compressed and decompressed digital images and video
CN107079105B (zh) 图像处理方法、装置、设备及视频图传系统
CN106228581B (zh) 通过gpu将像素格式由argb转换为nv12的方法及系统
KR102523233B1 (ko) 컬러 픽처를 디코딩하는 방법 및 디바이스
KR102509504B1 (ko) 코딩 및 디코딩 방법과 대응하는 디바이스
CN104581103A (zh) 一种图片处理方法及装置
EP3113496A1 (en) Method and device for encoding both a hdr picture and a sdr picture obtained from said hdr picture using color mapping functions
KR20160130163A (ko) 넓은 색상 범위 비디오 코딩을 위한 지각적 색 변환
CN108234982A (zh) 一种自动识别图像多原色分量的视频传输方法
US20240205471A1 (en) Method for implementing coding and decoding of yuv444 image on basis of h.265
US20180139360A1 (en) Method and device for processing color image data representing colors of a color gamut
CN105100763A (zh) 色彩补偿方法及电路、显示装置
CN102300102B (zh) 利用色彩解耦的视讯传输的方法及其装置
CN103546731B (zh) 一种将Bitmap转成YUV格式的文件的方法
CN106303485A (zh) 兼容传输多原色扩展色域的方法
RU2705013C2 (ru) Способ и устройство кодирования и декодирования цветного изображения
CN107948652A (zh) 一种进行图像转换的方法和设备
CA2924461A1 (en) System and method for reducing visible artifacts in the display of compressed and decompressed digital images and video
CN109618144A (zh) 识别多原色图像信号中yuv信号来源的方法
KR100726067B1 (ko) 이미지 포멧 변환 방법
CN102075750B (zh) 一种rgb空间的视频编解码方法、装置和系统
CN110460901A (zh) 一种视频发送和接收方法及其设备
CN112135150A (zh) 图像压缩和解压缩方法、可读介质及其电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee after: OPPO Guangdong Mobile Communications Co., Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee before: Guangdong Opel Mobile Communications Co., Ltd.