`

JPEG颜色转换实现文件

阅读更多

yuvtorgb.cpp - ISee图像浏览器 JPEG颜色转换实现文件

版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's

这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用公共许
可证条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根
据你的选择)用任何更新的版本。

发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
目地的隐含的担保。更详细的情况请参阅GNU通用公共许可证。

你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,
写信给:
The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
MA02139, USA

如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
系:
http://isee.126.com
http://www.vchelp.net
或:
yzfree@sina.com

作者: analyst

文件版本:
Build 00523
Date 2000-5-23

********************************************************************/

static int Cr1_402[256],Cb0_34414[256],Cr0_71414[256],Cb1_772[256];

init()
{
///............

for (i=0;i<256;i++)
{
Cr1_402[i]=(int)(1.402*(signed char)i+1);
Cb0_34414[i]=(int)(-0.34414*(signed char)i+1);
Cr0_71414[i]=(int)(-0.71414*(signed char)i+1);
Cb1_772[i]=(int)(1.772*(signed char)i+1);
}

///............

}

DWORD YUV_RGB32(int y,int r,int g,int b)
{
y+=128; r+=y;
b+=y; g+=y;
if(r<0)r=0; if(g<0)g=0; if(b<0)b=0;
if(r>255)r=255; if(g>255)g=255; if(b>255)b=255;
return r<<16¦g<<8¦b;
};

void YCbCr411_RGB32(DWORD *bmppixel,int pitch)
{

int i,j,Cb,Cr,m;
int r,g,b;
signed char *CrBuf=(signed char *)jpeg_crbuf;
signed char *CbBuf=(signed char *)jpeg_cbbuf;
signed char *YBuf=(signed char *)jpeg_ybuf;
for (m=0;m<4;m++,bmppixel-=(m&1)*pitch*2-8+16*(m==2))
for (i=0;i<8;i+=2) {
for (j=0;j<8;j+=2) {
Cb=CbBuf[(i/2+4*(m/2))*8+j/2+4*(m&1)];
Cr=CrBuf[(i/2+4*(m/2))*8+j/2+4*(m&1)];

r=Cr1_402[(BYTE)Cr];
g=Cb0_34414[(BYTE)Cb]+Cr0_71414w[(BYTE)Cr];
b=Cb1_772[(BYTE)Cb];

*bmppixel=YUV_RGB32(YBuf[i*8+j+128*m],r,g,b),++bmppixel;
*bmppixel=YUV_RGB32(YBuf[i*8+j+1+128*m],r,g,b),++bmppixel;
*(bmppixel+pitch/4-2)=YUV_RGB32(YBuf[i*8+j+8+128*m],r,g,b);
*(bmppixel+pitch/4-1)=YUV_RGB32(YBuf[i*8+j+9+128*m],r,g,b);
}
bmppixel=(DWORD*)((unsigned)bmppixel+pitch*2-32);
}
}

void YCbCr111_RGB32(DWORD *bmppixel,int pitch)
{
int i,j,Cb,Cr;
int r,g,b;
signed char *CrBuf=(signed char *)jpeg_crbuf;
signed char *CbBuf=(signed char *)jpeg_cbbuf;
signed char *YBuf=(signed char *)jpeg_ybuf;
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
Cb=CbBuf[i*8+j];
Cr=CrBuf[i*8+j];

r=Cr1_402[(BYTE)Cr];
g=Cb0_34414[(BYTE)Cb]+Cr0_71414w[(BYTE)Cr];
b=Cb1_772[(BYTE)Cb];
*bmppixel=YUV_RGB32(YBuf[i*8+j],r,g,b),++bmppixel;
}
bmppixel=(DWORD*)((unsigned)bmppixel+pitch-32);
}
}

/*灰度模式*/
void YYY_RGB32(DWORD *bmppixel,int pitch)
{
int i,j;
int Y;
signed char *YBuf=(signed char *)jpeg_ybuf;
for (i=0;i<8;i++) {
for (j=0;j<8;j++) {
Y=YBuf[i*8+j]+128;
*bmppixel=Y<<16¦Y<<8¦Y;
++bmppixel;
}
bmppixel=(DWORD*)((unsigned)bmppixel+pitch-32);
}
}

其他文档:

aspjpeg组件高级使用方法介绍

解密:一张所有XP用户都感到吃惊的图片

JPEG简易文档

BMP位图文件结构及VC操作

一个图形界面的俄罗斯方快c源码

AutoCad二次开发:ObjectARX技术谈

一种快速图形拉伸算法

google_ad_client = "pub-2416224910262877"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_channel = ""; google_color_border = "E1771E"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "000000"; google_color_url = "008000";
分享到:
评论

相关推荐

    BMP图像转换成JPEG图像

    该程序实现了按位读取BMP源文件,然后转换成24位真彩色,然后再将RGB转换到YCbCr颜色空间,便于进行离散余弦变换(FDCT)、量化、熵编码等后续处理储存为JPEG文件

    matlab灰度处理代码-JPEG-Compression-Implementation:JPEG压缩实现

    因此,没有颜色转换。 然后根据输入图像创建8x8块。 如果图像的高度和宽度不是8的倍数,请对图像进行零填充。 然后,对于每个8x8块,应用DCT。 接下来将量化应用于DCT系数。 为了进行量化,请使用此表。 接下来,以Z...

    matlab中jpeg图像编解码代码-JPEG-Coding-and-decoding:使用Matlab编码JPEG,然后解码

    其中包含以下过程:颜色转换,大小转换,DCT,量化,锯齿形,游程码,霍夫曼码(尚未完成), 高斯滤波器,中值滤波器, 前提条件系统环境:Windows 10软件:Matlab 2014源文件:Indoor.jpg和outdoor.jpg,door2.m和...

    基于mjpeg-streamer定制开发智能目标检测识别系统

    把一个BMP文件转换为JPEG文件,可以发现图片质量没发生变化,但是文件变小了很多 JPEG是根据人体视觉的特点采用了YCbCr格式,大大压缩了照片的大小 MJPEG MJPEG是静态图片的编码格式,MJPG是动态的视频编码格式 ...

    OFD转换PDF、IMG、SVG、HTML工具JAR包

    图片转换: 通过对OFD的文档进行解析,采用java.awt绘制图片,支持转换为PNG、JPEG图片格式。 SVG矢量图形转换: 使用Apachebatik-transcoder提供的图形绘制实现java.awtAPI绘制,最终生成SVG矢量图形。 HTML转换...

    Leadtools_Crack_16

    拥有超过2000种图像处理效果、图像变换及过滤、多种加载与观察选项、TWAIN扫描、打印、微型浏览器、Internet及数据库成像功能、压缩、屏幕捕获、绘图、颜色转换、Internet/intranet成像、图形转换、共用对话框等;...

    ImageEn3.02_Full_Source_Include_Libs

    无需解压就能实现本地操作,在TIFF文件中支持添加/移动/提取/enum以至于更快的处理方式。 读取简单的TIFF标签 保存为(PS和EPS)的附件形式,使用RLE,G3Fax,G4Fax和Jpeg格式对单个的或多个页面进行压缩。 保存为...

    《Visual C++数字图像处理开发入门与编程实践》源码

    4.6.3 JPEG文件的格式 160 4.7 本章实例:JPEG解码程序 163 4.7.1 概要设计 163 4.7.2 完成实例编码 169 4.8 本章小结 188 第5章 使用DIB处理数字图像 189 5.1 设备相关位图和设备 无关位图 190 5.1.1 设备相关位图...

    数码照片管理软件 PMS v16.4

    6.具有照片尺寸调整、照片压缩、图片格式转换等批处理功能,具有裁切、粘贴、旋转、水印、亮度调整、颜色调整等常用的图片处理功能;具有编制、提取GIF格式图像文件的功能; 7.支持 BMP、JPEG、GIF、WMF、EMF、DIB、...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    PDF Reader Pro v2.7.7

    PDF Reader Pro ,是一款PDF编辑阅读软件,PDF Reader Pro专家让您直接在 Mac 上进行PDF文件阅读、笔记、编辑、转换、创建PDF、签署PDFs、填写PDF Forms表单、设置密码、合并拆分文件、水印等等,实现无纸化办公。...

    图像批量转换工具 XnConvert 1.90 + x64 中文多语免费版.zip

    XnConvert是一款简单易用的批量图像格式转换软件,其所支持图片格式有JPG、PNG、TIFF、GIF、RAW、JPEG2000、WebP、OpenEXR等等。你可以轻松的实现图像格式的转换、缩放图像比例、添加滤镜特效、水印等等。XnConvert...

    vc++ 应用源码包_1

    文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI...

    vc++ 应用源码包_2

    文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI...

    vc++ 应用源码包_6

    文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI...

    vc++ 应用源码包_5

    文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI...

    vc++ 应用源码包_3

    文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI...

    Delphi6编程大师 图形与图像

    图形与图像 ========== TCOLOR值与RGB值的互相...将JPEG格式文件转化为WINDOWS墙纸 将图像从BMP格式转换为JPG格式 实现图像的淡入淡出 实现图像的翻转 实现位图显示特技 用双缓冲实现无闪烁动画 转换彩色位图为灰度图

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

Global site tag (gtag.js) - Google Analytics