資源簡(jiǎn)介
vc圖像編程實(shí)例:jpeg格式轉(zhuǎn)換成bmp
vc圖像編程實(shí)例:jpeg格式轉(zhuǎn)換成bmp
vc圖像編程實(shí)例:jpeg格式轉(zhuǎn)換成bmp
vc圖像編程實(shí)例:jpeg格式轉(zhuǎn)換成bmp

代碼片段和文件信息
//?jpegcompresstest.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include?“stdafx.h“
#include?
#include?
#include?
extern?“C“
{
#include?“..\libjpeg\jpeglib.h“
}
BYTE?srcBmpP[4096000];
//BYTE?jpeg_buffer[409600]; //用于內(nèi)存/
//?unconditional?swaps
#define?Swap16(s)?\
((short)?((((s)?&?0xff)?<8)?|?(((s)?>>?8)?&?0xff)))
#define?Swap32(l)?\
((int)?((((l)?&?0xff000000)?>>?24)?|?\
(((l)?&?0x00ff0000)?>>?8)??|?\
(((l)?&?0x0000ff00)?<8)??|?\
(((l)?&?0x000000ff)?<24)))
void?Screen(char?filename[])
{
//獲取當(dāng)前整個(gè)屏幕DC
HDC?hDC?=?GetDC(NULL);
//獲得顏色模式
int?BitPerPixel?=?GetDeviceCaps(hDC?BITSPIXEL);
int?Width?=?GetDeviceCaps(hDC?HORZRES);
int?Height?=?GetDeviceCaps(hDC?VERTRES);
//創(chuàng)建與獲得的CDC兼容的內(nèi)存設(shè)備描述
HDC?hMemDC?=?CreateCompatibleDC(hDC);
//建立和屏幕兼容的bitmap
HBITMAP?hMemBitmap?hOldMemBitmap;
//初始化memBitmap
hMemBitmap?=?CreateCompatibleBitmap(hDC?Width?Height);
//將memBitmap選入內(nèi)存DC
hOldMemBitmap?=?(HBITMAP)Selectobject(hMemDC?hMemBitmap);
//復(fù)制屏幕圖像到內(nèi)存DC
BitBlt(hMemDC0?0?Width?Height?hDC?0?0?SRCCOPY);
//以下代碼保存hMemDC中的位圖到文件
BITMAP?bmp;
//獲得位圖信息
Getobject(?hMemBitmap?(int)sizeof(BITMAP)?&bmp?);
// FILE?*fp?=?fopen(filename?“w+b“);
//位圖信息頭?
BITMAPINFOHEADER?bih?=?{0};
//每個(gè)像素字節(jié)大小
bih.biBitCount?=?bmp.bmBitsPixel;
//無(wú)壓縮
bih.biCompression?=?BI_RGB;
//高度
bih.biHeight?=?bmp.bmHeight;
bih.biPlanes?=?1;
bih.biSize?=?sizeof(BITMAPINFOHEADER);
//圖像數(shù)據(jù)大小
bih.biSizeImage?=?bmp.bmWidthBytes?*?bmp.bmHeight;
//寬度
bih.biWidth?=?bmp.bmWidth;
//位圖文件頭
BITMAPFILEHEADER?bfh?=?{0};
//到位圖數(shù)據(jù)的偏移量
bfh.bfOffBits?=?sizeof(BITMAPFILEHEADER)?+?sizeof(BITMAPINFOHEADER);
//文件總的大小
bfh.bfSize?=?bfh.bfOffBits?+?bmp.bmWidthBytes?*?bmp.bmHeight;
//字符“BM“,表示位圖文件
bfh.bfType?=?(WORD)0x4d42;
//寫(xiě)入位圖文件頭?
// fwrite(&bfh?1?sizeof(BITMAPFILEHEADER)?fp);
//寫(xiě)入位圖信息頭
// fwrite(&bih?1?sizeof(BITMAPINFOHEADER)?fp);
//申請(qǐng)內(nèi)存保存位圖數(shù)據(jù)
//BYTE?*?p?=?new?BYTE[bmp.bmWidthBytes?*?bmp.bmHeight];
//獲取位圖數(shù)據(jù)
GetDIBits(hMemDC?hMemBitmap?0?Height?srcBmpP?(LPBITMAPINFO)?&bih?DIB_RGB_COLORS);
//寫(xiě)入位圖數(shù)據(jù)
// fwrite(srcBmpP?1?bmp.bmWidthBytes?*?bmp.bmHeight?fp);
// delete?[]?p;
// fclose(fp);
Selectobject(hMemDC?hOldMemBitmap);?
}
int?image_width?=?1280;?//不是固定需要獲取
int?image_height?=?800;?//不是固定需要獲取
int?bitsPerPixel?=?32;?//不是固定需要獲取
BYTE?*m_buffer?=?srcBmpP;?//
int?m_remoteformat_bitsPerPixel??=?32;
//int?m_usePixelFormat24?=?false;
//static?struct?jpeg_destination_mgr?jpegDstManager;
//static?JOCTET?*jpegDstBuffer;?
//static?size_t?jpegDstBufferLen;
static?bool?jpegError;
//static?int?jpegDstDataLen;
//static?void?JpegInitDestination(j_compress_ptr?cinfo);
//static?boolean?JpegEmptyOutputBuffer(j_compress_ptr?cinfo);
//static?void?JpegTermDestination(j_compress_ptr?cinfo);
//
//static?void
//JpegInitDestination(j_compress_ptr?cinfo)
//{
// jpegError?=?false;
// jpegDstManager.next_output_byte?=?jpeg
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄??????????0??2007-01-28?22:10??jpegcompresstest\debug
?????目錄??????????0??2007-01-28?22:10??jpegcompresstest\jpegcompresstest\Debug
?????文件???????8176??2007-01-28?22:05??jpegcompresstest\jpegcompresstest\jpegcompresstest.cpp
?????文件???????4514??2007-01-28?15:43??jpegcompresstest\jpegcompresstest\jpegcompresstest.vcproj
?????文件???????1427??2007-01-28?22:07??jpegcompresstest\jpegcompresstest\jpegcompresstest.vcproj.MICROSOF-B2A6F0.Administrator.user
?????文件???????1004??2007-01-28?15:43??jpegcompresstest\jpegcompresstest\ReadMe.txt
?????文件????????221??2007-01-28?15:43??jpegcompresstest\jpegcompresstest\stdafx.cpp
?????文件????????276??2007-01-28?15:43??jpegcompresstest\jpegcompresstest\stdafx.h
?????目錄??????????0??2007-01-28?22:05??jpegcompresstest\jpegcompresstest
?????文件???????1527??2007-01-28?15:46??jpegcompresstest\jpegcompresstest.sln
?????文件???????1565??2002-12-11?15:06??jpegcompresstest\libjpeg\ansi2knr.1
?????文件??????23008??2002-12-11?15:06??jpegcompresstest\libjpeg\ansi2knr.c
?????文件???????5381??2002-12-11?15:06??jpegcompresstest\libjpeg\cderror.h
?????文件???????4863??2002-12-11?15:06??jpegcompresstest\libjpeg\cdjpeg.c
?????文件???????6307??2002-12-11?15:06??jpegcompresstest\libjpeg\cdjpeg.h
?????文件???????9501??2002-12-11?15:06??jpegcompresstest\libjpeg\change.log
?????文件??????10418??2002-12-11?15:06??jpegcompresstest\libjpeg\cjpeg.1
?????文件??????20458??2002-12-11?15:06??jpegcompresstest\libjpeg\cjpeg.c
?????文件??????12568??2002-12-11?15:06??jpegcompresstest\libjpeg\ckconfig.c
?????文件??????25163??2002-12-11?15:06??jpegcompresstest\libjpeg\config.guess
?????文件??????20756??2002-12-11?15:06??jpegcompresstest\libjpeg\config.sub
?????文件??????62320??2002-12-11?15:06??jpegcompresstest\libjpeg\configure
?????目錄??????????0??2007-01-28?22:10??jpegcompresstest\libjpeg\Debug
?????文件???????7669??2002-12-11?15:06??jpegcompresstest\libjpeg\djpeg.1
?????文件??????19955??2002-12-11?15:06??jpegcompresstest\libjpeg\djpeg.c
?????文件??????17524??2002-12-11?15:06??jpegcompresstest\libjpeg\example.c
?????文件???????5834??2002-12-11?15:06??jpegcompresstest\libjpeg\install-sh
?????文件???????9401??2002-12-11?15:06??jpegcompresstest\libjpeg\jcapimin.c
?????文件???????6042??2002-12-11?15:06??jpegcompresstest\libjpeg\jcapistd.c
?????文件??????16849??2002-12-11?15:06??jpegcompresstest\libjpeg\jccoefct.c
............此處省略124個(gè)文件信息
評(píng)論
共有 條評(píng)論