CN103546731B - 一种将Bitmap转成YUV格式的文件的方法 - Google Patents
一种将Bitmap转成YUV格式的文件的方法 Download PDFInfo
- 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
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),扩展名可以是.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的转换。
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)
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格式的数字图像显示和分析方法 |
-
2013
- 2013-09-26 CN CN201310445610.8A patent/CN103546731B/zh active Active
Patent Citations (3)
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)
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. |