锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鏁版嵁鍧楋細 鏂囦歡澶達細 IHDR鍧楋細 PLTE鍧楋細 tRNS鍧楋細 IDAT鍧楋細 IEND鍧楋細 PNG鍥懼儚鍘嬬緝錛?br> 浜嗚В浜哖NG鐨勬枃浠剁粨鏋勶紝鍘嬬緝灝辨湁鐨勬斁鐭簡銆傚帇緙╂湁6涓駭鍒紝鍙互鏍規嵁闇瑕侀夋嫨銆?br>Level1錛氳鍙朠NG鏂囦歡錛屽皢闄ゅ叚澶у潡涔嬪鐨勬墍鏈夊尯鍧楅兘榪囨護鎺?br>Level2錛氭枃浠跺ご鏄浐瀹氱殑0x89504e47 0x0d0a1a0a錛屾枃浠跺熬鏄浐瀹氱殑0x00000000 0x49454e44 0xae426082錛屽幓鎺夛紒 PNG鍥懼儚瑙e帇錛?br> 鍒涘緩浜嗚嚜瀹氫箟鐨勬枃浠訛紝J2ME绔鍙栧悗錛屽氨闈復瑙e帇鐨勯棶棰樹簡銆傛垜浠彲浠ュ埄鐢ㄦ鍑芥暟鏉ュ垱寤篒mage錛?br>static Image PNG鍥懼儚鍔犺В瀵嗭細
銆銆HRESULT LoadPSD( LPSTR strFilename ) // 璇誨彇PSD鏂囦歡
銆銆{
銆銆銆銆DWORD dwWidth, dwHeight; // 瀹介珮
銆銆銆銆long lSurfWidth = m_Rect.right - m_Rect.left;
銆銆銆銆long lSurfHeight = m_Rect.bottom - m_Rect.top;
銆銆銆銆WORD CompressionType; // 鍘嬬緝綾誨瀷
銆銆銆銆HDC hDC;
銆銆銆銆FILE *fpPSD;
銆銆銆銆WORD ChannelCount; // 閫氶亾鏁?/span>
銆銆銆銆// 鎵撳紑PSD鏂囦歡
銆銆銆銆if ( ( fpPSD = fopen ( strFilename, "rb" ) ) == NULL ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 澶村洓涓瓧鑺備負"8BPS"
銆銆銆銆char signature[5];
銆銆銆銆signature[0] = fgetc( fpPSD );
銆銆銆銆signature[1] = fgetc( fpPSD );
銆銆銆銆signature[2] = fgetc( fpPSD );
銆銆銆銆signature[3] = fgetc( fpPSD );
銆銆銆銆signature[4] = '\0';
銆銆銆銆if ( strcmp( signature,"8BPS" ) != 0 ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 鐗堟湰蹇呴』涓?
銆銆銆銆if ( Read16( fpPSD ) != 1 ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 璺寵繃涓浜涙暟鎹?(鎬繪槸0)
銆銆銆銆Read32( fpPSD );
銆銆銆銆Read16( fpPSD );
銆銆銆銆// 璇誨彇閫氶亾鏁?/font>
銆銆銆銆ChannelCount = Read16( fpPSD );
銆銆銆銆// 紜畾鑷沖皯鏈変竴涓氶亾
銆銆銆銆if ( ( ChannelCount < 0 ) || ( ChannelCount > MAX_PSD_CHANNELS ) ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 璇誨叆瀹藉拰楂?/font>
銆銆銆銆dwHeight = Read32( fpPSD );
銆銆銆銆dwWidth = Read32( fpPSD );
銆銆銆銆if ( dwWidth != ( DWORD )lSurfWidth || dwHeight != ( DWORD )lSurfHeight ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 鍙鍏?浣嶉氶亾
銆銆銆銆if ( Read16( fpPSD ) != 8 ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 紜畾妯″紡涓篟GB.
銆銆銆銆// 鍙兘鍊鹼細
銆銆銆銆// 0: 浣嶅浘
銆銆銆銆// 1: 鐏伴樁
銆銆銆銆// 2: 绱㈠紩
銆銆銆銆// 3: RGB
銆銆銆銆// 4: CMYK
銆銆銆銆// 7: Multichannel
銆銆銆銆// 8: Duotone
銆銆銆銆// 9: Lab
銆銆銆銆if ( Read16( fpPSD ) != 3 ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 璺寵繃鏁版嵁錛堝璋冭壊鏉匡級
銆銆銆銆int ModeDataCount = Read32( fpPSD );
銆銆銆銆if ( ModeDataCount )
銆銆銆銆銆銆fseek( fpPSD, ModeDataCount, SEEK_CUR );
銆銆銆銆// 璺寵繃鏁版嵁錛堝錛歱en tool paths, etc錛?/font>
銆銆銆銆int ResourceDataCount = Read32( fpPSD );
銆銆銆銆if ( ResourceDataCount )
銆銆銆銆銆銆fseek( fpPSD, ResourceDataCount, SEEK_CUR );
銆銆銆銆// 鏉¤繃淇濈暀鏁版嵁
銆銆銆銆int ReservedDataCount = Read32( fpPSD );
銆銆銆銆if ( ReservedDataCount )
銆銆銆銆銆銆fseek( fpPSD, ReservedDataCount, SEEK_CUR );
銆銆銆銆// 0: 闈炲帇緙?br>銆銆銆銆// 1: RLE鍘嬬緝
銆銆銆銆CompressionType = Read16( fpPSD );
銆銆銆銆if ( CompressionType > 1 ) {
銆銆銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆BYTE* PSDPixels = new BYTE[ ( lSurfWidth * lSurfHeight ) * 4 ];
銆銆銆銆// 瑙e寘鏁版嵁
銆銆銆銆UnPackPSD( fpPSD, lSurfWidth, lSurfHeight, PSDPixels, ChannelCount, CompressionType );
銆銆銆銆fclose( fpPSD );
銆銆銆銆// 澶嶅埗淇℃伅
銆銆銆銆BITMAPINFO BitmapInfo;
銆銆銆銆ZeroMemory( &BitmapInfo, sizeof( BitmapInfo ) );
銆銆銆銆BitmapInfo.bmiHeader.biSize = sizeof( BitmapInfo.bmiHeader );
銆銆銆銆BitmapInfo.bmiHeader.biWidth = lSurfWidth;
銆銆銆銆BitmapInfo.bmiHeader.biHeight = -lSurfHeight;
銆銆銆銆BitmapInfo.bmiHeader.biPlanes = 1;
銆銆銆銆BitmapInfo.bmiHeader.biBitCount = 32;
銆銆銆銆m_lpDDS7->GetDC( &hDC );
銆銆銆銆int rc = StretchDIBits( hDC,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆0,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆0,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆lSurfWidth,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆lSurfHeight,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆0,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆0,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆lSurfWidth,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆lSurfHeight,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆PSDPixels,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆&BitmapInfo,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆DIB_RGB_COLORS,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆SRCCOPY );
銆銆銆銆m_lpDDS7->ReleaseDC( hDC );
銆銆銆銆if ( rc == GDI_ERROR ) {
銆銆銆銆銆銆H_ARRAY_DELETE( PSDPixels );
銆銆#ifdef _DEBUG
銆銆銆銆g_pHERR->OutDebugMsg( 3, H2DSERR_INVALID_PSD );
銆銆#endif
銆銆銆銆return E_FAIL;
銆銆銆銆}
銆銆銆銆// 鏄惁璇誨彇Alpha娣峰悎閫氶亾
銆銆銆銆if( ChannelCount > 3 ) {
銆銆銆銆銆銆m_pbAlphaMask = new BYTE[ lSurfWidth * lSurfHeight ];
銆銆銆銆for ( int x = 0; x < lSurfWidth; x++ )
銆銆銆銆銆銆for ( int y = 0; y < lSurfHeight; y++ ) {
銆銆銆銆銆銆銆銆m_pbAlphaMask[ ( y * lSurfWidth ) + x ] =
銆銆銆銆銆銆銆銆銆銆銆銆銆銆 銆PSDPixels[ ( ( ( y * lSurfHeight ) + x ) * 4 ) + 3 ];
銆銆銆銆銆銆}
銆銆銆銆}
銆銆銆銆else {
銆銆銆銆銆銆m_pbAlphaMask = NULL;
銆銆銆銆}
銆銆銆銆H_ARRAY_DELETE( PSDPixels );
銆銆銆銆return DD_OK;
銆銆}
銆銆// PSD鏂囦歡瑙e寘
銆
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 DWORD dwWidth,銆銆 // dwWidth銆乨wHeight涓哄楂橈紝
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 DWORD dwHeight,
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 BYTE* pixels,銆銆銆// pixels涓鴻В鍖呯洰鏍囨寚閽堬紝
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 WORD ChannelCnt,銆 // ChannelCnt涓洪氶亾鏁幫紝
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 WORD Compression ) // Compression浣嶅帇緙╃被鍨嬨?
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆
銆銆{
銆銆銆銆int Default[4] = { 0, 0, 0, 255 };
銆銆銆銆int chn[4] = { 2, 1, 0, 3};
銆銆銆銆int PixelCount = dwWidth * dwHeight;
銆銆銆銆if ( Compression ) {
銆銆銆銆銆銆fseek( fp, dwHeight * ChannelCnt * 2, SEEK_CUR );
銆銆銆銆銆銆for ( int c = 0; c < 4; c++ ) {
銆銆銆銆銆銆銆銆int pn = 0;
銆銆銆銆銆銆銆銆int channel = chn[c];
銆銆銆銆銆銆銆銆if ( channel >= ChannelCnt ) {
銆銆銆銆銆銆銆銆銆銆for ( pn=0; pn < PixelCount ;pn++ ) {
銆銆銆銆銆銆銆銆銆銆銆銆pixels[ ( pn * 4 ) + channel ] = Default[ channel ];
銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆else // 闈炲帇緙?br>銆銆銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆銆銆int count = 0;
銆銆銆銆銆銆銆銆銆銆while( count < PixelCount ) {
銆銆銆銆銆銆銆銆銆銆銆銆int len = fgetc( fp );
銆銆銆銆銆銆銆銆銆銆銆銆if( len == 128 ) { }
銆銆銆銆銆銆銆銆銆銆銆銆銆銆len++;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆count += len;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆while(len) {
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆pixels[ ( pn * 4 ) + channel ] = fgetc( fp );
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆pn++;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆len--;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆銆銆銆銆}
銆銆銆 銆銆銆銆銆銆銆銆 else if ( len > 128 ) // RLE鎵撳寘
銆銆銆銆銆銆銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆銆銆銆銆銆銆len ^= 0x0FF;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆len += 2;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆unsigned char val = fgetc( fp );
銆銆銆銆銆銆銆銆銆銆銆銆銆銆count += len;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆while( len ) {
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆pixels[ ( pn * 4 ) + channel ] = val;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆pn++;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆len--;
銆銆銆銆銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆}
銆銆銆銆}
銆銆銆銆else
銆銆銆銆{
銆銆銆銆銆銆for ( int c=0; c < 4; c++ ) {
銆銆銆銆銆銆銆銆int channel = chn[c];
銆銆銆銆銆銆銆銆if ( channel > ChannelCnt ) {
銆銆銆銆銆銆銆銆銆銆for( int pn = 0; pn < PixelCount; pn++ ) {
銆銆銆銆銆銆銆銆銆銆銆銆pixels[ ( pn * 4 ) + channel ] = Default[ channel ];
銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆else {
銆銆銆銆銆銆銆銆銆銆for( int n = 0; n < PixelCount; n++ ) {
銆銆銆銆銆銆銆銆銆銆銆銆pixels[ ( n * 4 ) + channel ] = fgetc( fp );
銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆}
銆銆銆銆}
銆銆}
]]>
]]>
銆
鏈枃妗f槸涓烘弧瓚寵澶氬 TGA 鍥懼儚鏍煎紡鐨勪簡瑙i渶瑕佽屽垱寤虹殑銆傛湰鏂囨憳褰曡嚜truevision 鎶鏈寚鍗楃殑闄勫綍 C錛屽鏋?
闇瑕佹洿榪涗竴姝ョ殑淇℃伅錛岃鑷翠俊浠ヤ笅鍦板潃錛?
at&t
electronic photography and imaging center
2002 wellesley ave.
indianapolis, in 42619
鏈枃妗d笉姹傚叏闈紝浣嗗姏姹傚噯紜傚鏋滀綘鍙戠幇浜嗕換浣曟嫾鍐欓敊璇垨鍐呭閿欒錛岃鍛婅瘔鎴戯紝錛?david mcduffe,
75530,2626 錛夛紝鎴戝皢鏀規榪欎簺閿欒錛岃阿璋€?
涓嶅叏闈㈢殑鍘熷洜鏄?TGA 鍖呭惈浜嗚秴榪囧叚縐嶅浘鍍忔枃浠舵牸寮忥紝鑰屽叾涓殑鍑犵杈冧負甯哥敤銆?鎴戦夋嫨浜嗘垜鐜板湪浣跨敤鐨勬牸寮忓茍
鍦ㄦ湰鏂囦腑鍔犱互璇﹁В銆?濡傛灉浣犻渶瑕佹湰鏂囦腑娌℃湁鍖呭惈鐨勬牸寮忚鏄庯紝浣犲彲浠ヤ笌浣犵殑 truevision 浠g悊鍟嗚仈緋匯?/pre>
瀵規墍鏈夌殑 TGA 鏍煎紡鐨勬枃浠惰岃█錛屽叾絎笁瀛楄妭錛堜簩榪涘埗鏁存暟錛夌敤鏉ュ尯鍒悇縐嶄笉鍚岀殑 TGA 鏂囦歡銆備笅闈㈠垪鍑轟簡璇ュ瓧
鑺傝〃鏄庣殑瀵瑰簲鏂囦歡綾誨瀷錛?/pre>
0 - 鏂囦歡涓病鏈夊浘鍍忔暟鎹?/pre>
1 - 鏈帇緙╃殑錛岄鑹茶〃鍥懼儚
2 - 鏈帇緙╃殑錛宺gb 鍥懼儚
3 - 鏈帇緙╃殑錛岄粦鐧藉浘鍍?/pre>
9 - runlength 緙栫爜鐨勯鑹茶〃鍥懼儚
10 - runlength 緙栫爜鐨?rgb 鍥懼儚
11 - 鍘嬬緝鐨勶紝榛戠櫧鍥懼儚
32 - 浣跨敤 huffman,delta 鍜?runlength 緙栫爜鐨勯鑹茶〃鍥懼儚
33 - 浣跨敤 huffman,delta 鍜?runlength 緙栫爜鐨勯鑹叉槧灝勫浘鍍忥紝4 瓚熷洓鍙夋爲綾誨瀷澶勭悊銆?/pre>
鏈枃浠呬粎鎻忚堪瀵瑰簲 1錛?錛? 鍜?10 鐨勬枃浠舵牸寮忋?
--------------------------------------------------------------------------------
|鏁版嵁綾誨瀷 1錛?棰滆壊琛?color-mapped)鍥懼儚
|--------|--------|------------------------------------------------------------
| 鍋忕Щ | 闀垮害 | 鎻忚堪
|--------|--------|------------------------------------------------------------
| 0 | 1 | 鍥懼儚淇℃伅瀛楁錛堣鏈瓙琛ㄧ殑鍚庨潰錛夌殑瀛楃鏁?
| | |
| | | 鏈瓧孌墊槸 1 瀛楄妭鏃犵鍙鋒暣鍨嬶紝鎸囧嚭浜嗗浘鍍忔牸寮忓尯鍒瓧孌甸暱搴?
| | | 鍏跺彇鍊艱寖鍥存槸 0 鍒?255 錛屽綋瀹冧負 0 鏃惰〃紺烘病鏈夊浘鍍忕殑
| | | 淇℃伅瀛楁銆?
| | |
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 棰滆壊琛ㄧ殑綾誨瀷
| | |
| | | 璇ュ瓧孌典負琛ㄧず瀵瑰簲鏍煎紡 1 鐨勫浘鍍忚屽寘鍚竴涓簩榪涘埗 1
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 鍥懼儚綾誨瀷鐮?
| | |
| | | 璇ュ瓧孌墊諱負 1 錛?榪欎篃鏄綾誨瀷涓烘牸寮?1 鐨勫師鍥?
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 棰滆壊琛ㄨ鏍?
| | |
| 3 | 2 | 棰滆壊琛ㄩ鍧
| | | 棰滆壊琛ㄩ鍏冭〃欏圭殑鏁村瀷錛堜綆浣?楂樹綅錛夌儲寮?
| | |
| 5 | 2 | 棰滆壊琛ㄧ殑闀垮害
| | | 棰滆壊琛ㄧ殑琛ㄩ」鎬繪暟錛屾暣鍨嬶紙浣庝綅-楂樹綅錛?
| | |
| 7 | 1 | 棰滆壊琛ㄨ〃欏圭殑浣嶏紙bit錛夋暟
| | | 16 浠h〃 16 浣?TGA 錛?4 浠h〃 24 浣?TGA 錛?2 浠h〃 32 浣?TGA
| | |
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 鍥懼儚瑙勬牸
| | |
| 8 | 2 | 鍥懼儚 x 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?x 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 10 | 2 | 鍥懼儚 y 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?y 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 12 | 2 | 鍥懼儚瀹藉害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忓搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 14 | 2 | 鍥懼儚楂樺害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忛珮搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 16 | 1 | 鍥懼儚姣忓儚绱犲瓨鍌ㄥ崰鐢ㄤ綅錛坆it錛夋暟
| | |
| | |
| 17 | 1 | 鍥懼儚鎻忚堪絎﹀瓧鑺?
| | | bits 3-0 - 姣忓儚绱犵殑灞炴т綅錛坆it錛夋暟
| | |
| | | bit 4 - 淇濈暀錛屽繀欏諱負 0
| | | bit 5 - 灞忓箷璧峰浣嶇疆鏍囧織
| | | 0 = 鍘熺偣鍦ㄥ乏涓嬭
| | | 1 = 鍘熺偣鍦ㄥ乏涓婅
| | | truevision 鍥懼儚蹇呴』涓?0
| | | bits 7-6 - 浜ゅ弶鏁版嵁瀛樺偍鏍囧織
| | | 00 = 鏃犱氦鍙?
| | | 01 = 涓よ礬濂?鍋朵氦鍙?
| | | 10 = 鍥涜礬浜ゅ弶
| | | 11 = 淇濈暀
| | | 榪欎竴欏瑰簲璇ヨ涓?0錛屼笉瑕侀棶鎴戜負浠涔?
| | |
|--------|--------|------------------------------------------------------------
| 18 | 鍙彉 | 鍥懼儚淇℃伅瀛楁
| | | 鍖呭惈涓涓嚜鐢辨牸寮忕殑錛岄暱搴︽槸鍥懼儚璁板綍鍧楀亸縐?0 澶勭殑瀛楄妭涓殑
| | | 鍊箋傚畠甯稿父琚拷鐣ワ紙鍗沖亸縐?0 澶勫間負 0 錛夛紝娉ㄦ剰鍏舵渶澶у彲浠?
| | | 鍚湁 255 涓瓧絎︺傚鏋滈渶瑕佸瓨鍌ㄦ洿澶氫俊鎭紝鍙互鏀懼湪鍥懼儚鏁版嵁
| | | 涔嬪悗
| | |
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 棰滆壊琛ㄦ暟鎹?
| | |
| | | 璧峰浣嶇疆鐢卞墠涓涓瓧孌電殑澶у皬鍐沖畾錛涘叾闀垮害鐢卞崟欏規暟鎹ぇ灝?
| | | 鍜屾暟鎹」鏁扮洰鍐沖畾錛堝湪鍓嶉潰鐩稿簲鐨勮鏄庡瓧孌典腑緇欏嚭錛?
| | | 姣忛」鏄?2 瀛楄妭錛? 瀛楄妭鎴?4 瀛楄妭錛屽瓧鑺備腑娌℃湁浣跨敤鐨勪綅錛坆it錛?
| | | 琚涓烘槸灞炴т綅銆?
| | |
| | | 4 瀛楄妭琛ㄩ」涓紝瀛楄妭 1 琛ㄧず BLUE錛屽瓧鑺?2 琛ㄧず GREEN錛?
| | | 瀛楄妭 3 琛ㄧず RED錛屽瓧鑺?4 琛ㄧず灞炴?
| | | 3 瀛楄妭琛ㄩ」涓悇瀛楄妭渚濇瀵瑰簲 BLUE錛孏REEN錛孯ED
| | |
| | | 2 瀛楄妭琛ㄩ」涓紝涓や釜瀛楄妭鍒嗚В鎴愬涓嬪艦寮忥細
| | | arrrrrgg gggbbbbb
| | | 浣嗘槸錛岀敱浜庝綆浣嶅湪鍓嶏紝楂樹綅鍦ㄥ悗鐨勫瓨鍌ㄩ『搴忥紝浠庢枃浠朵腑璇誨嚭琛ㄩ」
| | | 鏃訛紝灝嗗厛璇誨叆 gggbbbbb 鑰屽悗璇誨叆 arrrrrgg 錛沘 琛ㄧず灞炴т綅銆?
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 鍥懼儚鏁版嵁瀛楁
| | |
| | | 璇ュ瓧孌電粰鍑轟簡 錛堥珮搴︼級x錛堝搴︼級涓鑹茶〃欏圭儲寮曪紝姣忎釜绱㈠紩
| | | 浠ユ暣鏁頒釜瀛楄妭鐨勫艦寮忓瓨鍌紙鍏稿瀷鐨勪緥瀛愬 1 鎴?2 涓瓧鑺傦級
| | | 鎵鏈夌殑鏁版嵁閮芥病鏈夌鍙鳳紝瀵逛簬 2-瀛楄妭琛ㄩ」鑰岃█錛屼綆浣嶅瓧鑺傛槸
| | | 鍏堝瓨鍌ㄧ殑銆?
| | |
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|鏁版嵁綾誨瀷 2錛?鏃犻鑹茶〃 rgb 鍥懼儚
|--------|--------|------------------------------------------------------------
| 鍋忕Щ | 闀垮害 | 鎻忚堪
|--------|--------|----------------------------------------------------------
| 0 | 1 | 鍥懼儚淇℃伅瀛楁錛?瑙佹湰瀛愯〃鐨勫悗闈?錛夌殑瀛楃鏁?
| | |
| | | 鏈瓧孌墊槸 1 瀛楄妭鏃犵鍙鋒暣鍨嬶紝鎸囧嚭浜嗗浘鍍忔牸寮忓尯鍒瓧孌甸暱搴?
| | | 鍏跺彇鍊艱寖鍥存槸 0 鍒?255 錛屽綋瀹冧負 0 鏃惰〃紺烘病鏈夊浘鍍忕殑
| | | 淇℃伅瀛楁銆?
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 棰滆壊琛ㄧ被鍨?
| | |
| | | 璇ュ瓧孌電殑鍐呭鎴栬呬負 0 鎴栬呬負 1錛? 琛ㄧず娌℃湁棰滆壊琛紝1 琛ㄧず
| | | 棰滆壊琛ㄥ瓨鍦ㄣ傜敱浜庢湰鏍煎紡鏄棤棰滆壊琛ㄧ殑錛屽洜姝ゆ欏歸氬父琚拷鐣ャ?
| | | 鎻愮ず錛氬鏋滅疆涓?1錛坱arga 緇樼敾紼嬪簭錛夊皢鎶婅竟妗嗛鑹茶緗負鏄犲皠
| | | 涓殑絎竴縐嶉鑹?
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 鍥懼儚綾誨瀷鐮?
| | |
| | | 璇ュ瓧孌墊諱負 2 錛?榪欎篃鏄綾誨瀷涓烘牸寮?2 鐨勫師鍥?
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 棰滆壊琛ㄨ鏍?
| | |
| | | 濡傛灉棰滆壊琛ㄧ被鍨嬪瓧孌典負 0 鍒欒蹇界暐錛涘惁鍒欐弿榪板涓?
| | |
| 3 | 2 | 棰滆壊琛ㄩ鍧
| | | 棰滆壊琛ㄩ鍏冨叆鍙g殑鏁村瀷錛堜綆浣?楂樹綅錛夌儲寮?
| | |
| 5 | 2 | 棰滆壊琛ㄧ殑闀垮害
| | | 棰滆壊琛ㄧ殑琛ㄩ」鎬繪暟錛屾暣鍨嬶紙浣庝綅-楂樹綅錛?
| | |
| 7 | 1 | 棰滆壊琛ㄨ〃欏圭殑浣嶏紙bit錛夋暟
| | | 16 浠h〃 16 浣?TGA 錛?4 浠h〃 24 浣?TGA 錛?2 浠h〃 32 浣?TGA
| | |
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 鍥懼儚瑙勬牸
| | |
| 8 | 2 | 鍥懼儚 x 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?x 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 10 | 2 | 鍥懼儚 y 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?y 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 12 | 2 | 鍥懼儚瀹藉害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忓搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 14 | 2 | 鍥懼儚楂樺害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忛珮搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 16 | 1 | 鍥懼儚姣忓儚绱犲瓨鍌ㄥ崰鐢ㄤ綅錛坆it錛夋暟
| | | 瀹冪殑鍊間負16錛?4 鎴?32 絳夌瓑鍐沖畾浜嗚鍥懼儚鏄?TGA 16錛孴GA24
| | | TGA 32 絳夌瓑
| | |
| 17 | 1 | 鍥懼儚鎻忚堪絎﹀瓧鑺?
| | | bits 3-0 - 姣忓儚绱犲搴旂殑灞炴т綅鐨勪綅鏁幫紱瀵逛簬 TGA 16錛?
| | | 璇ュ間負 0 鎴?1錛屽浜?TGA 24錛岃鍊間負 0錛?
| | | 瀵逛簬 TGA 32錛岃鍊間負 8
| | |
| | | bit 4 - 淇濈暀錛屽繀欏諱負 0
| | | bit 5 - 灞忓箷璧峰浣嶇疆鏍囧織
| | | 0 = 鍘熺偣鍦ㄥ乏涓嬭
| | | 1 = 鍘熺偣鍦ㄥ乏涓婅
| | | 瀵逛簬 truevision 鍥懼儚蹇呴』涓?0
| | | bits 7-6 - 浜ゅ弶鏁版嵁瀛樺偍鏍囧織
| | | 00 = 鏃犱氦鍙?
| | | 01 = 涓よ礬濂?鍋朵氦鍙?
| | | 10 = 鍥涜礬浜ゅ弶
| | | 11 = 淇濈暀
| | |
|--------|--------|------------------------------------------------------------
| 18 | 鍙彉 | 鍥懼儚淇℃伅瀛楁
| | | 鍖呭惈涓涓嚜鐢辨牸寮忕殑錛岄暱搴︽槸鍥懼儚璁板綍鍧楀亸縐?0 澶勭殑瀛楄妭涓殑
| | | 鍊箋傚畠甯稿父琚拷鐣ワ紙鍗沖亸縐?0 澶勫間負 0 錛夛紝娉ㄦ剰鍏舵渶澶у彲浠?
| | | 鍚湁 255 涓瓧絎︺傚鏋滈渶瑕佸瓨鍌ㄦ洿澶氫俊鎭紝鍙互鏀懼湪鍥懼儚鏁版嵁
| | | 涔嬪悗
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 棰滆壊琛ㄦ暟鎹?
| | |
| | | 濡傛灉棰滆壊琛ㄧ被鍨嬩負 0錛屽垯璇ュ煙涓嶅瓨鍦紝鍚﹀垯瓚婅繃璇ュ煙鐩存帴璇誨彇
| | | 鍥懼儚棰滆壊琛ㄨ鏍間腑鎻忚堪浜嗘瘡欏圭殑瀛楄妭鏁幫紝涓?2錛?錛? 涔嬩竴
| | |
| | |
| | |
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 鍥懼儚鏁版嵁鍩?
| | |
| | | 榪欓噷瀛樺偍浜嗭紙瀹藉害錛墄錛堥珮搴︼級涓儚绱狅紝姣忎釜鍍忕礌涓殑 rgb 鑹插?
| | | 璇ヨ壊鍊煎寘鍚暣鏁頒釜瀛楄妭
| | |
| | |
| | | 3 瀛楄妭琛ㄩ」涓悇瀛楄妭渚濇瀵瑰簲 BLUE錛孏REEN錛孯ED
| | |
| | | 2 瀛楄妭琛ㄩ」涓紝涓や釜瀛楄妭鍒嗚В鎴愬涓嬪艦寮忥細
| | | arrrrrgg gggbbbbb
| | | 浣嗘槸錛岀敱浜庝綆浣嶅湪鍓嶏紝楂樹綅鍦ㄥ悗鐨勫瓨鍌ㄩ『搴忥紝浠庢枃浠朵腑璇誨嚭琛ㄩ」
| | | 鏃訛紝灝嗗厛璇誨叆 gggbbbbb 鑰屽悗璇誨叆 arrrrrgg 錛沘 琛ㄧず灞炴т綅
| | |
| | | 4 瀛楄妭琛ㄩ」鍖呭惈浜嗗垎鍒唬琛?blue,green,red 鍙婂睘鎬х殑鍥涗釜
| | | 瀛楄妭錛涳紙鐢變簬紜歡涓婄殑鍘熷洜錛夋湁鐨勬椂鍊?TGA 24 綾誨瀷鐨勫浘鍍忎篃璞?
| | | TGA 32 綾誨瀷鐨勫浘鍍忛偅鏍峰瓨鍌?
| | |
| | |
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|鏁版嵁綾誨瀷 9: runlength 緙栫爜錛屽甫棰滆壊琛ㄧ殑鍥懼儚
|--------|--------|------------------------------------------------------------
| 鍋忕Щ | 闀垮害 | 鎻忚堪
|--------|--------|------------------------------------------------------------
| 0 | 1 | 鍥懼儚淇℃伅瀛楁錛堣鏈瓙琛ㄧ殑鍚庨潰錛夌殑瀛楃鏁?
| | |
| | | 鏈瓧孌墊槸 1 瀛楄妭鏃犵鍙鋒暣鍨嬶紝鎸囧嚭浜嗗浘鍍忔牸寮忓尯鍒瓧孌甸暱搴?
| | | 鍏跺彇鍊艱寖鍥存槸 0 鍒?255 錛屽綋瀹冧負 0 鏃惰〃紺烘病鏈夊浘鍍忕殑
| | | 淇℃伅瀛楁銆?
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 棰滆壊琛ㄧ殑綾誨瀷
| | |
| | | 璇ュ瓧孌典負琛ㄧず瀵瑰簲甯﹂鑹茶〃鐨勫浘鍍忚屾諱負 1
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 鍥懼儚綾誨瀷鐮?
| | |
| | | 鏈被鍨嬭瀛楁涓轟簩榪涘埗 9
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 棰滆壊琛ㄨ鏍?
| | |
| | | 濡傛灉棰滆壊琛ㄧ被鍨嬪瓧孌典負 0 鍒欒蹇界暐錛涘惁鍒欐弿榪板涓?
| | |
| | |
| 3 | 2 | 棰滆壊琛ㄩ鍧
| | | 棰滆壊琛ㄩ鍏冨叆鍙g殑鏁村瀷錛堜綆浣?楂樹綅錛夌儲寮?
| | |
| 5 | 2 | 棰滆壊琛ㄧ殑闀垮害
| | | 棰滆壊琛ㄧ殑琛ㄩ」鎬繪暟錛屾暣鍨嬶紙浣庝綅-楂樹綅錛?
| | |
| 7 | 1 | 棰滆壊琛ㄨ〃欏圭殑浣嶏紙bit錛夋暟
| | | 16 浠h〃 16 浣?TGA 錛?4 浠h〃 24 浣?TGA 錛?2 浠h〃 32 浣?TGA
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 鍥懼儚瑙勬牸
| | |
| 8 | 2 | 鍥懼儚 x 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?x 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 10 | 2 | 鍥懼儚 y 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?y 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 12 | 2 | 鍥懼儚瀹藉害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忓搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 14 | 2 | 鍥懼儚楂樺害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忛珮搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 16 | 1 | 鍥懼儚姣忓儚绱犲瓨鍌ㄥ崰鐢ㄤ綅錛坆it錛夋暟
| | |
| | |
| 17 | 1 | 鍥懼儚鎻忚堪絎﹀瓧鑺?
| | | bits 3-0 - 姣忓儚绱犵殑灞炴т綅錛坆it錛夋暟
| | |
| | | bit 4 - 淇濈暀錛屽繀欏諱負 0
| | | bit 5 - 灞忓箷璧峰浣嶇疆鏍囧織
| | | 0 = 鍘熺偣鍦ㄥ乏涓嬭
| | | 1 = 鍘熺偣鍦ㄥ乏涓婅
| | | truevision 鍥懼儚蹇呴』涓?0
| | | bits 7-6 - 浜ゅ弶鏁版嵁瀛樺偍鏍囧織
| | | 00 = 鏃犱氦鍙?
| | | 01 = 涓よ礬濂?鍋朵氦鍙?
| | | 10 = 鍥涜礬浜ゅ弶
| | | 11 = 淇濈暀
| | |
|--------|--------|------------------------------------------------------------
| 18 | 鍙彉 | 鍥懼儚淇℃伅瀛楁
| | | 鍖呭惈涓涓嚜鐢辨牸寮忕殑錛岄暱搴︽槸鍥懼儚璁板綍鍧楀亸縐?0 澶勭殑瀛楄妭涓殑
| | | 鍊箋傚畠甯稿父琚拷鐣ワ紙鍗沖亸縐?0 澶勫間負 0 錛夛紝娉ㄦ剰鍏舵渶澶у彲浠?
| | | 鍚湁 255 涓瓧絎︺傚鏋滈渶瑕佸瓨鍌ㄦ洿澶氫俊鎭紝鍙互鏀懼湪鍥懼儚鏁版嵁
| | | 涔嬪悗
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 棰滆壊琛ㄦ暟鎹?
| | |
| | | 璧峰浣嶇疆鐢卞墠涓涓瓧孌電殑澶у皬鍐沖畾錛涘叾闀垮害鐢卞崟欏規暟鎹ぇ灝?
| | | 鍜屾暟鎹」鏁扮洰鍐沖畾錛堝湪鍓嶉潰鐩稿簲鐨勮鏄庡瓧孌典腑緇欏嚭錛?
| | | 姣忛」鏄?2 瀛楄妭錛? 瀛楄妭鎴?4 瀛楄妭錛屽瓧鑺備腑娌℃湁浣跨敤鐨勪綅錛坆it錛?
| | | 琚涓烘槸灞炴т綅銆?
| | |
| | | 4 瀛楄妭琛ㄩ」涓紝瀛楄妭 1 琛ㄧず BLUE錛屽瓧鑺?2 琛ㄧず GREEN錛?
| | | 瀛楄妭 3 琛ㄧず RED錛屽瓧鑺?4 琛ㄧず灞炴?
| | | 3 瀛楄妭琛ㄩ」涓悇瀛楄妭渚濇瀵瑰簲 BLUE錛孏REEN錛孯ED
| | |
| | | 2 瀛楄妭琛ㄩ」涓紝涓や釜瀛楄妭鍒嗚В鎴愬涓嬪艦寮忥細
| | | arrrrrgg gggbbbbb
| | | 浣嗘槸錛岀敱浜庝綆浣嶅湪鍓嶏紝楂樹綅鍦ㄥ悗鐨勫瓨鍌ㄩ『搴忥紝浠庢枃浠朵腑璇誨嚭琛ㄩ」
| | | 鏃訛紝灝嗗厛璇誨叆 gggbbbbb 鑰屽悗璇誨叆 arrrrrgg 錛沘 琛ㄧず灞炴т綅銆?
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 鍥懼儚鏁版嵁鍩?
| | |
| | | 鏈尯鍩熺粰鍑轟簡錛堝搴︼級x錛堥珮搴︼級涓鑹茶〃绱㈠紩榪欎簺绱㈠紩瀛樻斁
| | | 鍦ㄦ暟鎹寘涓紱鏈変袱涓被鍨嬬殑鏁版嵁鍖咃細run-length 鏁版嵁鍖咃紝
| | | 浠ュ強鏈姞宸ョ殑鏁版嵁鍖咃紝姣忕綾誨瀷鐨勬暟鎹寘鍚湁 1-瀛楄妭鐨勫ご淇℃伅錛?
| | | 錛堝叾涓寚鍑轟簡鏁版嵁鍖呯被鍨嬪拰鏁扮洰錛夛紝鍏跺悗鏄彲鍙橀暱搴︾殑鏁版嵁鍩?
| | | 澶翠俊鎭腑鏈楂樹綅涓?1 琛ㄧず run-length 綾誨瀷鐨勬暟鎹寘錛屽綋
| | | 瀹冧負 0 鏃訛紝琛ㄧず鏈姞宸ョ殑鏁版嵁鍖?
| | |
| | | 瀵逛簬 run-length 鏁版嵁鍖咃紝澶翠俊鎭惈涔夊涓?
| | | __________________________________________________
| | | | 1 bit | 7 浣嶇殑閲嶅璁版暟鍑忎竴
| | | | id | 鐢變簬 7 浣嶈〃紺虹殑鏈澶у間負 127錛屾晠鏈澶? |
| | | | | 鐨勮繍琛屽ぇ灝忎負 128錛岋紙璇戞敞錛氬師鏂囦負 |
| | | | | the largest run size錛? |
| | | |-------|----------------------------------------|
| | | | 1 | c c c c c c c |
| | | --------------------------------------------------
| | |
| | | 瀵逛簬鏈姞宸ユ暟鎹寘錛屽ご淇℃伅鐨勫惈涔夊涓?
| | | __________________________________________________
| | | | 1 bit | 7 浣嶇殑鍍忕礌涓暟鍑忎竴 |
| | | | id | 鐢變簬 7 浣嶈〃紺虹殑鏈澶у間負 127錛屾晠璇? |
| | | | | 綾誨瀷鐨勪竴涓暟鎹寘涓儚绱犱釜鏁頒笉鑳藉ぇ浜? |
| | | | | 128 |
| | | |-------|----------------------------------------|
| | | | 0 | n n n n n n n |
| | | --------------------------------------------------
| | |
| | | 瀵逛簬 run-length 鏁版嵁鍖呰岃█錛屽ご淇℃伅涔嬪悗鏄竴涓畝鍗曠殑
| | | 棰滆壊绱㈠紩錛屼笖鍋囧畾璇ョ儲寮曡閲嶅澶翠俊鎭腑浣?7 浣嶈〃紺虹殑嬈℃暟
| | | run-length 鏁版嵁鍖呬篃璁鎬細璺ㄨ秺鎵弿綰?
| | | 錛堟壂鎻忕嚎璧峰浜庢煇琛岀粨鏉熶簬涓嬩竴琛岋級
| | |
| | | 瀵逛簬鏈姞宸ョ殑鏁版嵁鍖咃紝澶翠俊鎭箣鍚庢槸棰滆壊绱㈠紩錛堟暟鍊肩敱澶翠俊鎭?
| | | 緇欏嚭錛夎綾誨瀷鐨勬暟鎹寘涔熷彲鑳借法瓚婃壂鎻忕嚎
| | |
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|鏁版嵁綾誨瀷 10錛歳un length 緙栫爜錛宺gb 鍥懼儚
|--------|--------|------------------------------------------------------------
| 鍋忕Щ | 闀垮害 | 鎻忚堪
|--------|--------|------------------------------------------------------------
| 0 | 1 | 鍥懼儚淇℃伅瀛楁錛堣鏈瓙琛ㄧ殑鍚庨潰錛夌殑瀛楃鏁?
| | |
| | | 鏈瓧孌墊槸 1 瀛楄妭鏃犵鍙鋒暣鍨嬶紝鎸囧嚭浜嗗浘鍍忔牸寮忓尯鍒瓧孌甸暱搴?
| | | 鍏跺彇鍊艱寖鍥存槸 0 鍒?255 錛屽綋瀹冧負 0 鏃惰〃紺烘病鏈夊浘鍍忕殑
| | | 淇℃伅瀛楁銆?
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 璇ュ瓧孌電殑鍐呭鎴栬呬負 0 鎴栬呬負 1錛? 琛ㄧず娌℃湁棰滆壊琛紝1 琛ㄧず
| | | 棰滆壊琛ㄥ瓨鍦ㄣ傜敱浜庢湰鏍煎紡鏄棤棰滆壊琛ㄧ殑錛屽洜姝ゆ欏歸氬父琚拷鐣ャ?
| | | 鎻愮ず錛氬鏋滅疆涓?1錛坱arga 緇樼敾紼嬪簭錛夊皢鎶婅竟妗嗛鑹茶緗負鏄犲皠
| | | 涓殑絎竴縐嶉鑹?
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 鍥懼儚綾誨瀷浠g爜
| | |
| | | 鏈被鍨嬭瀛楁涓轟簩榪涘埗 10
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 棰滆壊琛ㄨ鏍?
| | |
| | | 濡傛灉棰滆壊琛ㄧ被鍨嬪瓧孌典負 0 鍒欒蹇界暐錛涘惁鍒欐弿榪板涓?
| | |
| | |
| 3 | 2 | 棰滆壊琛ㄩ鍧
| | | 棰滆壊琛ㄩ鍏冨叆鍙g殑鏁村瀷錛堜綆浣?楂樹綅錛夌儲寮?
| | |
| 5 | 2 | 棰滆壊琛ㄧ殑闀垮害
| | | 棰滆壊琛ㄧ殑琛ㄩ」鎬繪暟錛屾暣鍨嬶紙浣庝綅-楂樹綅錛?
| | |
| 7 | 1 | 棰滆壊琛ㄨ〃欏圭殑浣嶏紙bit錛夋暟
| | | 16 浠h〃 16 浣?TGA 錛?4 浠h〃 24 浣?TGA 錛?2 浠h〃 32 浣?TGA
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 鍥懼儚瑙勬牸
| | |
| 8 | 2 | 鍥懼儚 x 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?x 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 10 | 2 | 鍥懼儚 y 鍧愭爣璧峰浣嶇疆
| | | 鍥懼儚宸︿笅瑙?y 鍧愭爣鐨勬暣鍨嬶紙浣庝綅-楂樹綅錛夊?
| | |
| | |
| 12 | 2 | 鍥懼儚瀹藉害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忓搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 14 | 2 | 鍥懼儚楂樺害
| | | 浠ュ儚绱犱負鍗曚綅錛屽浘鍍忛珮搴︾殑鏁村瀷錛堜綆浣?楂樹綅錛夊?
| | |
| 16 | 1 | 鍥懼儚姣忓儚绱犲瓨鍌ㄥ崰鐢ㄤ綅錛坆it錛夋暟
| | |
| | |
| 17 | 1 | 鍥懼儚鎻忚堪絎﹀瓧鑺?
| | | bits 3-0 - 姣忓儚绱犵殑灞炴т綅錛坆it錛夋暟
| | |
| | | bit 4 - 淇濈暀錛屽繀欏諱負 0
| | | bit 5 - 灞忓箷璧峰浣嶇疆鏍囧織
| | | 0 = 鍘熺偣鍦ㄥ乏涓嬭
| | | 1 = 鍘熺偣鍦ㄥ乏涓婅
| | | truevision 鍥懼儚蹇呴』涓?0
| | | bits 7-6 - 浜ゅ弶鏁版嵁瀛樺偍鏍囧織
| | | 00 = 鏃犱氦鍙?
| | | 01 = 涓よ礬濂?鍋朵氦鍙?
| | | 10 = 鍥涜礬浜ゅ弶
| | | 11 = 淇濈暀
| | |
|--------|--------|------------------------------------------------------------
| 18 | 鍙彉 | 鍥懼儚淇℃伅瀛楁
| | | 鍖呭惈涓涓嚜鐢辨牸寮忕殑錛岄暱搴︽槸鍥懼儚璁板綍鍧楀亸縐?0 澶勭殑瀛楄妭涓殑
| | | 鍊箋傚畠甯稿父琚拷鐣ワ紙鍗沖亸縐?0 澶勫間負 0 錛夛紝娉ㄦ剰鍏舵渶澶у彲浠?
| | | 鍚湁 255 涓瓧絎︺傚鏋滈渶瑕佸瓨鍌ㄦ洿澶氫俊鎭紝鍙互鏀懼湪鍥懼儚鏁版嵁
| | | 涔嬪悗
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 棰滆壊琛ㄦ暟鎹?
| | |
| | | 濡傛灉棰滆壊琛ㄧ被鍨嬩負 0錛屽垯璇ュ煙涓嶅瓨鍦紝鍚﹀垯瓚婅繃璇ュ煙鐩存帴璇誨彇
| | | 鍥懼儚棰滆壊琛ㄨ鏍間腑鎻忚堪浜嗘瘡欏圭殑瀛楄妭鏁幫紝涓?2錛?錛? 涔嬩竴
| | |
|--------|--------|------------------------------------------------------------
| 鍙彉 | 鍙彉 | 鍥懼儚鏁版嵁鍩?
| | |
| | | 鏈尯鍩熺粰鍑轟簡錛堝搴︼級x錛堥珮搴︼級涓鑹茶〃绱㈠紩榪欎簺绱㈠紩瀛樻斁
| | | 鍦ㄦ暟鎹寘涓紱鏈変袱涓被鍨嬬殑鏁版嵁鍖咃細run-length 鏁版嵁鍖咃紝
| | | 浠ュ強鏈姞宸ョ殑鏁版嵁鍖咃紝姣忕綾誨瀷鐨勬暟鎹寘鍚湁 1-瀛楄妭鐨勫ご淇℃伅錛?
| | | 錛堝叾涓寚鍑轟簡鏁版嵁鍖呯被鍨嬪拰鏁扮洰錛夛紝鍏跺悗鏄彲鍙橀暱搴︾殑鏁版嵁鍩?
| | | 澶翠俊鎭腑鏈楂樹綅涓?1 琛ㄧず run-length 綾誨瀷鐨勬暟鎹寘錛屽綋
| | | 瀹冧負 0 鏃訛紝琛ㄧず鏈姞宸ョ殑鏁版嵁鍖?
| | |
| | | 瀵逛簬 run-length 鏁版嵁鍖咃紝澶翠俊鎭惈涔夊涓?
| | | __________________________________________________
| | | | 1 bit | 7 浣嶇殑閲嶅璁版暟鍑忎竴
| | | | id | 鐢變簬 7 浣嶈〃紺虹殑鏈澶у間負 127錛屾晠鏈澶? |
| | | | | 鐨勮繍琛屽ぇ灝忎負 128錛岋紙璇戞敞錛氬師鏂囦負 |
| | | | | the largest run size錛? |
| | | |-------|----------------------------------------|
| | | | 1 | c c c c c c c |
| | | --------------------------------------------------
| | |
| | | 瀵逛簬鏈姞宸ユ暟鎹寘錛屽ご淇℃伅鐨勫惈涔夊涓?
| | | __________________________________________________
| | | | 1 bit | 7 浣嶇殑鍍忕礌涓暟鍑忎竴 |
| | | | id | 鐢變簬 7 浣嶈〃紺虹殑鏈澶у間負 127錛屾晠璇? |
| | | | | 綾誨瀷鐨勪竴涓暟鎹寘涓儚绱犱釜鏁頒笉鑳藉ぇ浜? |
| | | | | 128 |
| | | |-------|----------------------------------------|
| | | | 0 | n n n n n n n |
| | | --------------------------------------------------
| | |
| | |
| | | 瀵逛簬 run length 鏁版嵁鍖咃紝澶翠俊鎭箣鍚庢槸涓涓畝鍗曢鑹插鹼紝
| | | 涓斿亣瀹氳鍊奸噸澶嶇殑嬈℃暟涓哄ご淇℃伅涓褰曠殑鏁?
| | | run-length 鏁版嵁鍖呬篃璁鎬細璺ㄨ秺鎵弿綰?
| | | 錛堟壂鎻忕嚎璧峰浜庢煇琛岀粨鏉熶簬涓嬩竴琛岋級
| | |
| | | 瀵逛簬鏈姞宸ユ暟鎹寘錛屽ご淇℃伅涔嬪悗鏄鑹插鹼紙鏁扮洰鐢卞ご淇℃伅鎸囧嚭錛?
| | |
| | |
| | | 棰滆壊琛ㄩ」鑷韓鏈?2-瀛楄妭錛?-瀛楄妭鎴?4-瀛楄妭鍑犵澶у皬錛堝垎鍒?
| | | 瀵瑰簲 TGA 16,TGA 24 鍜?TGA 32錛夊艦寮忓涓嬶細
| | |
| | |
| | | 3 瀛楄妭琛ㄩ」涓悇瀛楄妭渚濇瀵瑰簲 BLUE錛孏REEN錛孯ED
| | |
| | | 2 瀛楄妭琛ㄩ」涓紝涓や釜瀛楄妭鍒嗚В鎴愬涓嬪艦寮忥細
| | | arrrrrgg gggbbbbb
| | | 浣嗘槸錛岀敱浜庝綆浣嶅湪鍓嶏紝楂樹綅鍦ㄥ悗鐨勫瓨鍌ㄩ『搴忥紝浠庢枃浠朵腑璇誨嚭琛ㄩ」
| | | 鏃訛紝灝嗗厛璇誨叆 gggbbbbb 鑰屽悗璇誨叆 arrrrrgg 錛沘 琛ㄧず灞炴т綅
| | |
| | | 4 瀛楄妭琛ㄩ」鍖呭惈浜嗗垎鍒唬琛?blue,green,red 鍙婂睘鎬х殑鍥涗釜
| | | 瀛楄妭錛涳紙鐢變簬紜歡涓婄殑鍘熷洜錛夋湁鐨勬椂鍊?TGA 24 綾誨瀷鐨勫浘鍍忎篃璞?
| | | TGA 32 綾誨瀷鐨勫浘鍍忛偅鏍峰瓨鍌?
| | |
--------------------------------------------------------------------------------
]]>
]]>
鍦↗2ME騫沖彴涓奝NG鍥劇墖鏍煎紡鍑犱箮鎴愪負浜嗘爣鍑嗭紝鏃犳暟鍙版墜鎸佽澶囦笂榪愯鐨凧2ME紼嬪簭鍑犱箮閮介夌敤PNG鏉ユ樉紺哄浘鍍忥紝鍖呮嫭澶ч噺鐨勬墜鏈烘父鎴忎互鍙婃墜鏈哄簲鐢紝鎵浠ュPNG鏂囦歡鏍煎紡鐨勪簡瑙o紝鍙互鏇存湁鏁堢殑鍑忓皯Jar Size錛屼繚鎶よ嚜鏈夌煡璇嗕駭鏉冦?br> CoCoMo鏇劇粡瀵筆NG鏂囦歡榪涜榪囦竴孌墊椂闂寸殑鐮旂┒錛屽寘鎷浘鍍忓帇緙┿佽В鍘嬩互鍙婂姞瑙e瘑絳夛紝鐜板皢鐮旂┒蹇冨緱璁板綍濡備笅錛?
PNG鏂囦歡鏍煎紡錛?br> PNG鏂囦歡鏍煎紡鍒嗕負PNG-24鍜孭NG-8錛屽叾鏈澶х殑鍖哄埆鏄疨NG-24鏄敤24浣嶆潵淇濆瓨涓涓儚绱犲鹼紝鏄湡褰╄壊錛岃孭NG-8鏄敤8浣嶇儲寮曞兼潵鍦ㄨ皟鑹茬洏涓儲寮曚竴涓鑹詫紝鍥犱負涓涓儲寮曞肩殑鏈澶т笂闄愪負2鐨?嬈℃柟鏃?28錛屾晠璋冭壊鐩樹腑棰滆壊鏁版渶澶氫負128縐嶏紝鎵浠ヨ鏂囦歡鏍煎紡鍙堣鍙仛PNG-8 128浠胯壊銆?br> PNG-24鍥犱負鍏跺浘鐗囧閲忚繃澶э紝鑰屼笖鍦∟okia鍜孧oto絳夋煇浜涙満鍨嬩笂鍒涘緩鍥劇墖澶辮觸鍜屾樉紺轟笉姝g‘絳夊紓甯告椂鏈夊彂鐢燂紝鏈夋椂榪樹細涓ラ噸鎷栨參鏄劇ず閫熷害錛屾晠騫朵笉甯哥敤錛孋oCoMo璁や負榪欎簺寮傚父鍜屽鉤鍙板簳灞傜殑鍥懼儚瑙e帇涓嶆棤鍏崇郴銆備笉榪囪鏍煎紡鏈澶х殑浼樼偣鏄彲浠ヤ繚瀛楢lpha閫氶亾錛屽悓浜嬩篃鏇炬湁榪囧埄鐢ㄨ鍥劇墖鏍煎紡瀹炵幇Alpha娣峰悎鐨勫厛渚嬶紝鎯蟲潵闅忕潃鎶鏈殑鍙戝睍錛屾墜鏈虹‖浠跺鉤鍙扮殑鎻愬崌錛孉lpha娣峰悎涓瀹氫細琚箍娉涚殑搴旂敤錛屽埌閭f椂璇ユ牸寮忕殑鏈澶т紭鍔挎墠浼氱湡姝e彂鎸ャ?br> PNG-8鏂囦歡鏄洰鍓嶅箍娉涘簲鐢ㄧ殑PNG鍥懼儚鏍煎紡錛屽叾涓昏鏈夊叚澶у潡緇勬垚錛?br>1.鏂囦歡澶?br>2.IHDR鍧?br>3.PLTE鍧?br>4.tRNS鍧?br>5.IDAT鍧?br>6.鏂囦歡灝?br>榪欏叚澶у潡鎸夐『搴忔帓鍒楋紝涔熷氨鏄IDAT鍧楁案榪滄槸鍦≒LTE鍧椾箣鍚庯紝鏈熼棿涔熶細鏈夎澶氬叾浠栫殑鍖哄潡鐢ㄦ潵鎻忚堪淇℃伅錛屼緥濡傚浘鍍忕殑鏈鍚庝慨鏀規椂闂存槸澶氬皯錛屽浘鍍忕殑鍒涘緩鑰呮槸璋佺瓑錛屼笉榪囪繖浜涘尯鍧楃殑淇℃伅瀵規垜浠潵璇撮兘鏄彲鏈夊彲鏃犵殑鎻忚堪淇℃伅錛屾晠鍘嬬緝鏃朵竴鑸厛鍚戣繖浜涘尯鍧楀紑鍒銆?/p>
闄や簡鏂囦歡澶達紝鍏朵腑鍥涘ぇ鏁版嵁鍧楀拰鏂囦歡灝鵑兘鏄敱緇熶竴鐨勬暟鎹潡鏂囦歡緇撴瀯鎻忚堪鐨勶細
Chunk Length: 4byte
Chunk Type: 4byte
Chunk Data: Chunk Length鐨勯暱搴?br> Chunk CRC: 4byte
渚嬪IHDR鍧楃殑鏁版嵁闀垮害涓?3錛屾棦
Chunk Length = 13
Chunk Type = "IHDR"
鐢ㄦ潵鏍囩ずPNG鏂囦歡錛屼負鍥哄畾鐨?4涓瓧鑺傦細0x89504e47 0x0d0a1a0a
鐢ㄦ潵鎻忚堪鍥懼儚鐨勫熀鏈俊鎭紝鍏舵牸寮忎負錛?br> 鍥懼儚瀹斤細 4byte
鍥懼儚楂橈細 4byte
鍥懼儚鑹叉繁錛?4byte
棰滆壊綾誨瀷錛?1byte
鍘嬬緝鏂規硶錛?1byte
婊ゆ嘗鏂規硶錛?1byte
鎵弿鏂規硶錛?1byte
鏇劇粡鏈変漢闂繃鎴戯紝鎾掑彨婊ゆ嘗鏂規硶鍜屾壂鎻忔柟娉曪紝姹楋紝璇村疄璇濇垜涔熶笉鐭ラ亾錛屼笉榪囨垜浠槸鍦ㄥ仛鎵嬫満娓告垙錛屼笉鏄湪鎼炲浘褰㈠涓嶆槸鍢涖?/p>
榪欎釜灝辨槸浼犺涓斁緗皟鑹茬洏鏁版嵁鐨勫湴鏂瑰暒錛屽叾鏍煎紡涓猴細
寰幆
RED錛?nbsp; 1byte
GREEN錛?byte
BLUE錛?nbsp; 1byte
END
寰幆闀垮害鍢涳紝涓嶅氨鏄疌hunk Length / 3鐨勯暱搴﹀槢錛岃屼笖Chunk Length涓瀹氫負3鐨勫嶆暟銆?/p>
榪欎釜鍧楁椂鏈夋椂鏃狅紝涓昏鏄湅浣犳槸鍚︿嬌鐢ㄤ簡閫忔槑鑹層傝鍖哄潡鐨勬牸寮忎負錛?br> 寰幆
if(瀵瑰簲璋冭壊鐩橀鑹查潪閫忔槑)
0xFF錛?nbsp; 1byte
else
0x00錛?nbsp; 1byte
END
寰幆闀垮害涓鴻皟鑹茬洏鐨勯鑹叉暟錛岀浉褰撲簬璋冭壊鐩橀鑹茶〃鐨勪竴涓搴旇〃錛屾爣璇嗚棰滆壊鏄惁閫忔槑錛?xFF涓嶉忔槑錛?x00閫忔槑銆傛晠濡傛灉鐢║ltraEdit鏌ョ湅PNG鏂囦歡鐨勪簩榪涘埗緙栫爜錛屽鏋滅湅鍒頒竴澶х墖FF錛屼竴鑸氨鏄痶RNS鍖哄潡鍟︼紝鍥犱負涓涓狿NG鏂囦歡涓鑸彧鏈変竴涓忔槑鑹層?/p>
榪欎釜灝辨槸瀛樻斁鍥懼儚鏁版嵁鐨勫湴鏂瑰暒錛岃繖閲岃娉ㄦ剰鐨勬槸涓涓狿NG鏂囦歡鍙兘鏈夊涓狪DAT鍖哄潡錛岃屽叾浠栦笁澶у尯鍧楀彧鍙兘鏈変竴涓?br>IDAT鍖哄潡鏄粡榪囧帇緙╃殑錛屾墍浠ユ暟鎹笉鍙錛屽帇緙╃畻娉曚竴鑸負LZ77婊戝姩紿楀彛綆楁硶錛屽鏋滅‖瑕佺湅閲岄潰鐨勬暟鎹殑璇濓紝鐢▃lib搴撲篃鏄彲浠ョ殑錛孋oCoMo褰撳勾灝辮榪嘩indows Mobile涓婄殑甯濆浗鏃朵唬宸ㄥ彉鎬佺殑鐢▃lib搴撳帇緙╁拰瑙e帇璇ュ尯鍧楁潵榪涗竴姝ュ噺灝慞NG鏂囦歡澶у皬錛岀湡鏄K瀵擱噾鍟娿?/p>
璇ュ尯鍧楄櫧鐒朵篃鎸夌収鏁版嵁鍧楃殑緇撴瀯錛屼絾Chunk Data鏄病鏈夌殑錛屾墍浠ユ槸鍥哄畾鐨?6涓瓧鑺傦細0x00000000 0x49454e44 0xae426082
Level3錛氭瘡涓尯鍧楃殑Chunk Type鎴戜滑鏄惁闇瑕佸憿錛熷緢鏄庢樉錛屾垜浠嚜宸卞啓鐨勫帇緙╂牸寮忚嚜宸卞簲璇ユ竻妤氭槸鎸夌収浠涔堟牱鐨勯『搴忥紝鍘繪帀錛?br>Level4錛氭瘡涓尯鍧楃殑Chunk Length鎴戜滑鏄惁闇瑕佸憿錛?br> IHDR鍧楋細瀹氶暱13涓瓧鑺傦紝鏄庢樉涓嶉渶瑕侊紝鍘繪帀銆?br> PLTE鍧楋細鏈澶?28涓鑹詫紝涓烘拻瑕佺敤4byte鏉ヨ褰曞尯鍧楅暱搴﹁屼笉鏄敤1byte鏉ヨ褰曢鑹叉暟鍛紵
tRNS鍧楋細鏃㈢劧鏈夐鑹叉暟錛宼RNS鍙堟槸璋冭壊鐩橀鑹茶〃鐨勫搴旇〃錛屾棦鏁伴噺涓庨鑹叉暟鐩稿悓錛屼負鎾掕繕闇瑕佸憿錛?br> IDAT鍧楋細鎴戞兂榪欎釜鏄敮涓闇瑕?byte鏉ヨ褰曢暱搴︾殑鍖哄潡銆?br>Level5錛氭瘡涓尯鍧楃殑Chunk CRC鏄惁闇瑕佸憿錛?br> 鍥犱負璁$畻CRC闇瑕佷竴浜涙椂闂達紝浣嗗浜庡瓧鑺傝緝灝戠殑鍖哄潡涓鑸彲浠ュ拷鐣ヤ笉璁★紝鎵浠ュ浜庤繖涓棶棰樿繕鏄敱紼嬪簭鍛樿嚜宸卞喅瀹氬惂銆傚浜嶤RC鐨勮綆楀彲浠ュ弬鐪婥oCoMo鐨勫彟涓綃嘊log“PNG鏂囦歡鐨凜RC鐮佽綆?#8221;
Level6錛氭瘡涓尯鍧楁垜浠槸鍚﹁鍘熷皝涓嶅姩鐨勪繚瀛樻湡鏁版嵁鍛紵
IHDR鍧楋細闄や簡瀹姐侀珮銆佽壊娣辨槸闇瑕佺殑錛屽悗闈㈤偅4byte鐨勪俊鎭槸鍥哄畾鐨?x03000000
PLTE鍧楋細涓烘拻瑕佺敤3byte鏉ヨ〃紺篟GB鑰屼笉鏄?byte鐨?65鏍煎紡錛熷帇緙╂柟娉曞彲浠ュ弬鐪婥oCoMo鐨勫彟涓綃嘊log“鍏充簬PNG鍥懼儚鍘嬬緝鐨勪竴鐐規劅鎮?#8221;
tRNS鍧楋細鎴戞兂tRNS鍧楁槸鍐椾綑鏈澶氱殑鍖哄潡浜嗗惂錛屽ぇ孌靛ぇ孌電殑0xFF鏄庢樉娌℃湁蹇呰錛屼竴鑸殑PNG鏂囦歡鍙湁涓涓忔槑鑹詫紝涓烘拻瑕佺敤瀵瑰簲琛ㄧ殑鏂規硶鑰屼笉鏄竴涓儲寮曟潵璁板綍鍒板簳鍝釜鏄忔槑鑹插憿錛熺敱浜庨鑹叉暟鏈澶?28錛屾墍浠ュ彧闇1byte灝卞彲浠ヤ唬鏇縯RNS閭d箞澶?xFF鍟︺?br> IDAT鍧楋細涔堟兂娉曪紝濡傛灉浣犲鍙樻侊紝鎶妟lib鍔犺繘鏉ュ惂錛?/p>
createImage(byte[] imageData, int imageOffset, int imageLength)
鍓嶆彁鏄紶鍏ョ殑imageData涓嶱NG鏈鍘嬬緝鍓嶇殑涓鑷淬傚洜涓篜NG鏂囦歡鏍煎紡鏄浐瀹氱殑錛屾墍浠ヨ鍙栬嚜瀹氫箟鐨勫帇緙╂枃浠跺悗錛屽紑濮嬪皢閭d簺榛樿鐨勬暟鎹啀娣誨姞榪涘幓錛屽疄鐜拌В鍘嬬殑鐩殑銆備笅闈㈠氨寮濮嬭В鍘嬩箣鏃呭惂!
棣栧厛瑕佸垱寤轟竴涓狟yteArrayOutputStream out錛?br>1.鍐欏叆鏂囦歡澶達細
out.writeInt(0x89504e47);
out.writeInt(0x0d0a1a0a);
2.鍐欏叆IHDR鍧?br>out.writeInt(13);
out.writeInt(0x49484452); //0x49484452涓篊hunk Type "IHDR"
out.writeInt(width);
out.writeInt(height);
out.writeByte(depth);
out.writeInt(0x03000000); //鍘嬬緝鏃惰垗鎺夌殑4byte錛岄粯璁?x03000000
out.writeInt(crc);
鍏朵粬鍖哄潡鏂規硶涓鑷達紝鏁呯暐榪囥傘傘?br>3.鍐欏叆鏂囦歡灝?br>out.writeInt(0x00000000);
out.writeInt(0x49454e44);
out.writeInt(0xae426082);
4.杞崲鎴愭暟緇勶紝鍒涘緩Image
byte[] pngBuffer = out.toByteArray();
Image image = Image.createImage(pngBuffer, 0, pngBuffer.length);
鍝堝搱錛屽ぇ鍔熷憡鎴愩傝繖閲屾敞鎰忓鏋滀腑閫旀暟鎹啓鍏ユ湁閿欒錛岀粡甯鎬細鍑虹幇鍒涘緩Image澶辮觸鐨勫紓甯革紝鑰屼笖闈炲父涓嶅ソ璋冭瘯錛屼笉榪囧彧瑕佽嚜瀹氱殑鍘嬬緝鏍煎紡瀹氫笅鏉ュ悗錛屽搴旂殑鍒涘緩Image鐨勫嚱鏁板彧瑕佸啓涓嬈★紝浠ュ悗鍩烘湰涓嶄細鍑洪棶棰樺搱銆?/p>
寰堝浜洪兘鎷呭績鑷繁杈涜嫤鍒涗綔鐨勬紓浜殑緹庢湳鍥劇墖寰坋asy灝辮鍒漢鎷垮埌浜嗭紝絀跺叾鍘熷洜鏄敱浜嶱NG鏂囦歡鏍煎紡鏄浐瀹氱殑錛岀◢寰簡瑙g殑浜虹敤UltraEdit寰堝鏄撳氨鑳芥壘鍒癐HDR錛孭LTE絳夋爣璇嗕簡銆侰oCoMo灝辯粡甯哥湅GameLoft鐨勫浘鍍忔枃浠訛紝鍝堝搱銆備竴鑸槸2byte鐨凩ength錛岀劧鍚庣揣鎺ョ潃鍥劇墖鏁版嵁錛岄兘鏀懼湪涓涓枃浠墮噷錛岀洿鎺ユ嫹璐?榪涘埗鐒跺悗綺樿創鍒頒竴涓柊鏂囦歡閲屽氨鏄竴騫呭浘銆傚悗鏉ョ殑鍔犲瘑鎶鏈細鎶奝NG鍒嗗潡錛屼緥濡傚墠100涓瓧鑺備竴鍧楋紝绱ф帴鐫1K涓鍧楋紝鏈鍚庡墿浣欏瓧鑺備竴鍧楋紝鐒跺悗鎶婂潡欏哄簭鎵撲貢錛岀敤2byte鏉ヨ褰曟婚暱搴︼紝1byte璁板綍欏哄簭錛屼絾鏄繖騫舵病鏈変粠鏍規湰涓婃秷闄HDR錛孖END榪欎簺鏄劇溂鐨勫畾浣嶆爣璇嗭紝濂藉儚鍦ㄥ鐮磋В鑰呰錛氬樋錛岀湅錛屾垜灝卞湪榪欓噷錛?br> 鐜板湪浜嗚В浜嗕箣鍓嶇殑鍘嬬緝鍜岃В鍘嬫妧鏈紝榪欎釜闂涔熷氨榪庡垉鑰岃В浜嗭紝鍥犱負Chunk Length錛孋hunk Type鍜孋hunk CRC榪欎簺涓滆タ閮芥秷澶變簡錛岀敋鑷寵繛鏁版嵁鍧楁湰韜殑鏁版嵁閮戒慨鏀逛簡錛屾垜鍙互鎸夌収ImageWidth銆両mageHeight銆両mageDepth鐨勯『搴忓啓鏁版嵁錛屼篃鍙互鍊掕繃鏉ュ啓銆傛垜鎯沖啀鐗涚殑PNG鍒嗘瀽鍣ㄤ篃鏄棤鑳戒負鍔涚殑鍚э紝鍞竴鍙互瀹氫綅鐨勫氨鍙湁IDAT鍖哄潡浜嗭紝涓嶈繃灝辯畻寰楀埌璇ュ尯鍧楃殑鏁版嵁錛屼篃搴旇鏄竴寮犻粦鐧藉浘銆?br> 涓嶈繃鍦ㄥ姞瑙e瘑鐨勯鍩熺湡鏄亾楂樹竴灝猴紝欖旈珮涓涓堬紝CoCoMo寰堝笇鏈涘拰鍚勪綅鍏卞悓鎺㈣錛屽叡鍚屾彁楂橈紒
]]>
涓銆佷笅闈㈡垜浠潵鐪嬬湅浣嶅浘鏂囦歡錛?/span>*.BMP錛夌殑鏍煎紡銆?/span>
浣嶅浘鏂囦歡涓昏鍒嗕負濡備笅3涓儴鍒嗭細
|
鍧楀悕縐?/font> |
瀵瑰簲Windows緇撴瀯浣撳畾涔?/span> |
澶у皬錛?/span>Byte錛?/span> |
|
鏂囦歡淇℃伅澶?/font> |
BITMAPFILEHEADER |
14 |
|
浣嶅浘淇℃伅澶?/font> |
BITMAPINFOHEADER |
40 |
|
RGB棰滆壊闃靛垪 |
BYTE* |
鐢卞浘鍍忛暱瀹藉昂瀵稿喅瀹?/font> |
1銆?span> 鏂囦歡淇℃伅澶?/span>BITMAPFILEHEADER
緇撴瀯浣撳畾涔夊涓嬶細
typedef struct tagBITMAPFILEHEADER { /* bmfh */
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
鍏朵腑錛?/font>
|
bfType |
璇存槑鏂囦歡鐨勭被鍨嬶紝璇ュ煎繀闇鏄?/span>0x4D42錛屼篃灝辨槸瀛楃'BM'銆?/span> |
|
bfSize |
璇存槑璇ヤ綅鍥炬枃浠剁殑澶у皬錛岀敤瀛楄妭涓哄崟浣?/span> |
|
bfReserved1 |
淇濈暀錛屽繀欏昏緗負0 |
|
bfReserved2 |
淇濈暀錛屽繀欏昏緗負0 |
|
bfOffBits |
璇存槑浠庢枃浠跺ご寮濮嬪埌瀹為檯鐨勫浘璞℃暟鎹箣闂寸殑瀛楄妭鐨勫亸縐婚噺銆傝繖涓弬鏁版槸闈炲父鏈夌敤鐨勶紝鍥犱負浣嶅浘淇℃伅澶村拰璋冭壊鏉跨殑闀垮害浼氭牴鎹笉鍚屾儏鍐佃屽彉鍖栵紝鎵浠ヤ綘鍙互鐢ㄨ繖涓亸縐誨艱繀閫熺殑浠庢枃浠朵腑璇誨彇鍒頒綅鏁版嵁銆?/span> |
2銆?/font>浣嶅浘淇℃伅澶?/span>BITMAPINFOHEADER
緇撴瀯浣撳畾涔夊涓嬶細
typedef struct tagBITMAPINFOHEADER { /* bmih */
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
鍏朵腑錛?/span>
|
biSize |
璇存槑BITMAPINFOHEADER緇撴瀯鎵闇瑕佺殑瀛楁暟銆?/span> |
|
biWidth |
璇存槑鍥捐薄鐨勫搴︼紝浠ヨ薄绱犱負鍗曚綅銆?/font> |
|
biHeight |
璇存槑鍥捐薄鐨勯珮搴︼紝浠ヨ薄绱犱負鍗曚綅銆傛敞錛氳繖涓奸櫎浜嗙敤浜庢弿榪板浘鍍忕殑楂樺害涔嬪錛屽畠榪樻湁鍙︿竴涓敤澶勶紝灝辨槸鎸囨槑璇ュ浘鍍忔槸鍊掑悜鐨勪綅鍥撅紝榪樻槸姝e悜鐨勪綅鍥俱傚鏋滆鍊兼槸涓涓鏁幫紝璇存槑鍥懼儚鏄掑悜鐨勶紝濡傛灉璇ュ兼槸涓涓礋鏁幫紝鍒欒鏄庡浘鍍忔槸姝e悜鐨勩傚ぇ澶氭暟鐨?/span>BMP鏂囦歡閮芥槸鍊掑悜鐨勪綅鍥撅紝涔熷氨鏄椂錛岄珮搴﹀兼槸涓涓鏁般?/span> |
|
biPlanes |
涓虹洰鏍囪澶囪鏄庝綅闈㈡暟錛屽叾鍊煎皢鎬繪槸琚涓?/span>1銆?/span> |
|
biBitCount |
璇存槑姣旂壒鏁?/span>/璞$礌錛屽叾鍊間負1銆?/span>4銆?/span>8銆?/span>16銆?/span>24銆佹垨32銆備絾鏄敱浜庢垜浠鉤鏃剁敤鍒扮殑鍥懼儚緇濆ぇ閮ㄥ垎鏄?/span>24浣嶅拰32浣嶇殑錛屾墍浠ユ垜浠璁鴻繖涓ょ被鍥懼儚銆?/span> |
|
biCompression |
璇存槑鍥捐薄鏁版嵁鍘嬬緝鐨勭被鍨嬶紝鍚屾牱鎴戜滑鍙璁烘病鏈夊帇緙╃殑綾誨瀷錛?/span>BI_RGB銆?/span> |
|
biSizeImage |
璇存槑鍥捐薄鐨勫ぇ灝忥紝浠ュ瓧鑺備負鍗曚綅銆傚綋鐢?/span>BI_RGB鏍煎紡鏃訛紝鍙緗負0銆?/span> |
|
biXPelsPerMeter |
璇存槑姘村鉤鍒嗚鯨鐜囷紝鐢ㄨ薄绱?/span>/綾寵〃紺恒?/span> |
|
biYPelsPerMeter |
璇存槑鍨傜洿鍒嗚鯨鐜囷紝鐢ㄨ薄绱?/span>/綾寵〃紺恒?/span> |
|
biClrUsed |
璇存槑浣嶅浘瀹為檯浣跨敤鐨勫僵鑹茶〃涓殑棰滆壊绱㈠紩鏁幫紙璁句負0鐨勮瘽錛屽垯璇存槑浣跨敤鎵鏈夎皟鑹叉澘欏癸級銆?/span> |
|
biClrImportant |
璇存槑瀵瑰浘璞℃樉紺烘湁閲嶈褰卞搷鐨勯鑹茬儲寮曠殑鏁扮洰錛屽鏋滄槸0錛岃〃紺洪兘閲嶈銆?/span> |
3銆?/span>RGB棰滆壊闃靛垪
鏈夊叧RGB涓夎壊絀洪棿鎴戞兂澶у閮藉緢鐔熸倝錛岃繖閲屾垜鎯寵鐨勬槸鍦?/span>Windows涓嬶紝RGB棰滆壊闃靛垪瀛樺偍鐨勬牸寮忓叾瀹?/span>BGR銆備篃灝辨槸璇達紝瀵逛簬24浣嶇殑RGB浣嶅浘鍍忕礌鏁版嵁鏍煎紡鏄細
|
钃濊壊B鍊?/span> |
緇胯壊G鍊?/span> |
綰㈣壊R鍊?/span> |
瀵逛簬32浣嶇殑RGB浣嶅浘鍍忕礌鏁版嵁鏍煎紡鏄細
|
钃濊壊B鍊?/span> |
緇胯壊G鍊?/span> |
綰㈣壊R鍊?/span> |
閫忔槑閫氶亾A鍊?/span> |
閫忔槑閫氶亾涔熺ОAlpha閫氶亾錛岃鍊兼槸璇ュ儚绱犵偣鐨勯忔槑灞炴э紝鍙栧煎湪0錛堝叏閫忔槑錛夊埌255錛堜笉閫忔槑錛変箣闂淬傚浜?/span>24浣嶇殑鍥懼儚鏉ヨ錛屽洜涓烘病鏈?/span>Alpha閫氶亾錛屾晠鏁翠釜鍥懼儚閮戒笉閫忔槑銆?/span>
浜屻佹悶娓呬簡鏂囦歡鏍煎紡錛屼笅涓姝ユ垜浠瀹炵幇鍔犺澆銆?/font>
鍔犺澆鏂囦歡鐨勭洰鐨勬槸瑕佸緱鍒板浘鐗囧睘鎬э紝浠ュ強RGB鏁版嵁錛岀劧鍚庡彲浠ュ皢鍏剁粯鍒跺湪DC涓?/span>(GDI)錛屾垨鏄敓鎴愮汗鐞嗗璞?/span>(3D:OpenGL/Direct3D)銆傝繖涓ょ鐢ㄩ斿湪鏁版嵁澶勭悊涓婃湁鐐瑰尯鍒紝鎴戜滑涓昏鎸夊墠涓縐嶇敤娉曡錛屽湪鍜?/span>3D鏈変笉鍚岀殑鍦版柟錛屾垜浠啀鎻愬嚭鏉ャ?/span>
1銆佸姞杞芥枃浠跺ご
//Load the file header
BITMAPFILEHEADER header;
memset(&header, 0, sizeof(header));
inf.read((char*)&header, sizeof(header));
if(header.bfType != 0x4D42)
return false;
榪欎釜寰堢畝鍗曪紝娌℃湁浠涔堝ソ璇寸殑銆?/span>
2銆佸姞杞戒綅鍥句俊鎭ご
//Load the image information header
BITMAPINFOHEADER infoheader;
memset(&infoheader, 0, sizeof(infoheader));
inf.read((char*)&infoheader, sizeof(infoheader));
m_iImageWidth = infoheader.biWidth;
m_iImageHeight = infoheader.biHeight;
m_iBitsPerPixel = infoheader.biBitCount;
榪欓噷鎴戜滑寰楀埌浜?/span>3鍚勯噸瑕佺殑鍥懼艦灞炴э細瀹斤紝楂橈紝浠ュ強姣忎釜鍍忕礌棰滆壊鎵鍗犵敤鐨勪綅鏁般?/span>
3銆?/font>琛屽榻?/span>
鐢變簬Windows鍦ㄨ繘琛岃鎵弿鐨勬椂鍊欐渶灝忕殑鍗曚綅涓?/span>4涓瓧鑺傦紝鎵浠ュ綋
鍥劇墖瀹?/span> X 姣忎釜鍍忕礌鐨勫瓧鑺傛暟 錛?/span>= 4鐨勬暣鏁板?/span>
鏃惰鍦ㄦ瘡琛岀殑鍚庨潰琛ヤ笂緙哄皯鐨勫瓧鑺傦紝浠?/span>0濉厖錛堜竴鑸潵璇村綋鍥懼儚瀹藉害涓?/span>2鐨勫箓鏃朵笉闇瑕佸榻愶級銆備綅鍥炬枃浠墮噷鐨勬暟鎹湪鍐欏叆鐨勬椂鍊欏凡緇忚繘琛屼簡琛屽榻愶紝涔熷氨鏄鍔犺澆鐨勬椂鍊欎笉闇瑕佸啀鍋氳瀵歸綈銆備絾鏄繖鏍蜂竴鏉ュ浘鐗囨暟鎹殑闀垮害灝變笉鏄細瀹?/span> X 楂?/span> X 姣忎釜鍍忕礌鐨勫瓧鑺傛暟 浜嗭紝鎴戜滑闇瑕侀氳繃涓嬮潰鐨勬柟娉曡綆楁紜殑鏁版嵁闀垮害錛?/span>
//Calculate the image data size
int iLineByteCnt = (((m_iImageWidth*m_iBitsPerPixel) + 31) >> 5) << 2;
m_iImageDataSize = iLineByteCnt * m_iImageHeight;
4銆?/font>鍔犺澆鍥劇墖鏁版嵁
瀵逛簬24浣嶅拰32浣嶇殑浣嶅浘鏂囦歡錛屼綅鍥炬暟鎹殑鍋忕Щ閲忎負sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)錛屼篃灝辨槸璇寸幇鍦ㄦ垜浠彲浠ョ洿鎺ヨ鍙栧浘鍍忔暟鎹簡銆?/span>
if(m_pImageData) delete []m_pImageData;
m_pImageData = new unsigned char[m_iImageDataSize];
inf.read((char*)m_pImageData, m_iImageDataSize);
濡傛灉浣犺凍澶熺粏蹇冿紝灝變細鍙戠幇鍐呭瓨m_pImageData閲岀殑鏁版嵁鐨勭‘鏄?/span>BGR鏍煎紡錛屽彲浠ョ敤涓函钃濊壊鎴栬呮槸綰孩鑹茬殑鍥劇墖嫻嬭瘯涓涓嬨?/span>
5銆?/font>緇樺埗
濂戒簡錛屾暟鎹拰灞炴ф垜浠兘鏈変簡錛岀幇鍦ㄥ氨鍙互鎷挎潵闅忎究鐢ㄤ簡錛屽氨鍜屽悆棣掑ご涓鏍鳳紝鐖辯矘鐧界硸綺樼櫧緋栵紝鐖辯矘綰㈢硸綺樼孩緋栥備笅闈㈡槸鎴戠殑GDI緇樺埗浠g爜錛屼粎浣滃弬鑰冦?/span>
void CImage::DrawImage(HDC hdc, int iLeft, int iTop, int iWidth, int iHeight)
{
if(!hdc || m_pImageData == NULL)
return;
BITMAPINFO bmi;
memset(&bmi, 0, sizeof(bmi));
bmi.bmiHeader.biSize = sizeof(BITMAPINFO);
bmi.bmiHeader.biWidth = m_iImageWidth;
bmi.bmiHeader.biHeight = m_iImageHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = m_iBitsPerPixel;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = m_iImageDataSize;
StretchDIBits(hdc, iLeft, iTop, iWidth, iHeight,
0, 0, m_iImageWidth, m_iImageHeight,
m_pImageData, &bmi, DIB_RGB_COLORS, SRCCOPY);
}
6銆?/span>3D(OpenGL)鐨勪笉鍚屼箣澶?/span>
濡傛灉浣犳槸鎯崇敤鍒氭墠鎴戜滑寰楀埌鐨勬暟鎹敓鎴愮汗鐞嗗璞★紝閭d箞浣犺繕瑕佽鍑轟笅闈㈢殑闂銆?/font>
棣栧厛錛岀敤鏉ョ敓鎴愮汗鐞嗙殑鏁版嵁涓嶉渶瑕佸榻愶紝涔熷氨鏄涓嶈兘鍦ㄦ瘡琛岀殑鍚庨潰鍔犱笂瀵歸綈鐨勫瓧鑺傘傚綋鐒跺湪OpenGL閲岃姹傜汗鐞嗗浘鐗囩殑灝哄涓?/span>2鐨勫箓錛屾墍浠ヨ繖涓棶棰樺疄闄呬笂涓嶅瓨鍦紱
鍏舵錛屾垜浠緱鍒扮殑鍥懼艦鏁版嵁鏍煎紡鏄?/span>BGR(BGRA)錛屾墍浠ュ湪鐢熸垚綰圭悊鐨勬椂鍊欙紝闇鎸囧畾鏍煎紡涓?/span>GL_BGR_EXT(GL_BGRA_EXT)錛涘惁鍒欓渶瑕佸仛BGR->RGB(BGRA->RGBA)鐨勮漿鍖?/span>
|
浣嶅浘鏂囦歡鐨勭粍鎴?/p> |
緇撴瀯鍚嶇О |
絎﹀彿 |
| 浣嶅浘鏂囦歡澶?bitmap-file header) | BITMAPFILEHEADER | bmfh |
| 浣嶅浘淇℃伅澶?bitmap-information header) | BITMAPINFOHEADER | bmih |
| 褰╄壊琛?color table) | RGBQUAD | aColors[] |
| 鍥捐薄鏁版嵁闃靛垪瀛楄妭 | BYTE | aBitmapBits[] |
浣嶅浘鏂囦歡緇撴瀯鍙患鍚堝湪琛?-01涓?/p>
琛?1 浣嶅浘鏂囦歡緇撴瀯鍐呭鎽樿
| 銆 |
鍋忕Щ閲?/p> |
鍩熺殑鍚嶇О |
澶у皬 |
鍐呭 |
||||||||
| 銆
銆 銆 鍥捐薄鏂囦歡 澶?/p> |
0000h | 鏂囦歡鏍囪瘑 | 2 bytes | 涓ゅ瓧鑺傜殑鍐呭鐢ㄦ潵璇嗗埆浣嶅浘鐨勭被鍨嬶細
‘BM’ 錛?Windows 3.1x, 95, NT, … ‘BA’ 錛歄S/2 Bitmap Array ‘CI’ 錛歄S/2 Color Icon ‘CP’ 錛歄S/2 Color Pointer ‘IC’ 錛?OS/2 Icon ‘PT’ 錛歄S/2 Pointer 娉細鍥犱負OS/2緋葷粺騫舵病鏈夎鏅強寮錛屾墍浠ュ湪緙栫▼鏃訛紝浣犲彧闇鍒ゆ柇絎竴涓爣璇?#8220;BM”灝辮銆?/p> |
||||||||
| 銆 | 0002h | File Size | 1 dword | 鐢ㄥ瓧鑺傝〃紺虹殑鏁翠釜鏂囦歡鐨勫ぇ灝?/td> | ||||||||
| 銆 | 0006h | Reserved | 1 dword | 淇濈暀錛屽繀欏昏緗負0 | ||||||||
| 銆 | 000Ah | Bitmap Data Offset | 1 dword | 浠庢枃浠跺紑濮嬪埌浣嶅浘鏁版嵁寮濮嬩箣闂寸殑鏁版嵁(bitmap data)涔嬮棿鐨勫亸縐婚噺 | ||||||||
| 銆 | 000Eh | Bitmap Header Size | 1 dword | 浣嶅浘淇℃伅澶?Bitmap Info Header)鐨勯暱搴︼紝鐢ㄦ潵鎻忚堪浣嶅浘鐨勯鑹層佸帇緙╂柟娉曠瓑銆備笅闈㈢殑闀垮害琛ㄧず錛?
28h - Windows 3.1x, 95, NT, … 0Ch - OS/2 1.x F0h - OS/2 2.x 娉細鍦╓indows95銆?8銆?000絳?font color=#0000ff>鎿嶄綔緋葷粺涓紝浣嶅浘淇℃伅澶寸殑闀垮害騫朵笉涓瀹氭槸28h錛屽洜涓哄井杞凡緇忓埗瀹氬嚭浜嗘柊鐨凚MP鏂囦歡鏍煎紡錛屽叾涓殑淇℃伅澶寸粨鏋勫彉鍖栨瘮杈冨ぇ錛岄暱搴﹀姞闀褲傛墍浠ユ渶濂戒笉瑕佺洿鎺ヤ嬌鐢ㄥ父鏁?8h錛岃屾槸搴旇浠庡叿浣撶殑鏂囦歡涓鍙栬繖涓箋傝繖鏍鋒墠鑳界‘淇濈▼搴忕殑鍏煎鎬с?/p> |
||||||||
| 銆 | 0012h | Width | 1 dword | 浣嶅浘鐨勫搴︼紝浠ヨ薄绱犱負鍗曚綅 | ||||||||
| 銆 | 0016h | Height | 1 dword | 浣嶅浘鐨勯珮搴︼紝浠ヨ薄绱犱負鍗曚綅 | ||||||||
| 銆 | 001Ah | Planes | 1 word | 浣嶅浘鐨勪綅闈㈡暟錛堟敞錛氳鍊煎皢鎬繪槸1錛?/td> | ||||||||
鍥捐薄 淇℃伅 澶?/p> 銆 銆 |
001Ch | Bits Per Pixel | 1 word | 姣忎釜璞$礌鐨勪綅鏁?
1 - 鍗曡壊浣嶅浘錛堝疄闄呬笂鍙湁涓ょ棰滆壊錛岀己鐪佹儏鍐典笅鏄粦鑹插拰鐧借壊銆備綘鍙互鑷繁瀹氫箟榪欎袱縐嶉鑹詫級 4 - 16 鑹蹭綅鍥?/p> 8 - 256 鑹蹭綅鍥?/p> 16 - 16bit 楂樺僵鑹蹭綅鍥?/p> 24 - 24bit 鐪熷僵鑹蹭綅鍥?/p> 32 - 32bit 澧炲己鍨嬬湡褰╄壊浣嶅浘 |
||||||||
| 銆 | 001Eh | Compression | 1 dword | 鍘嬬緝璇存槑錛?
0 - 涓嶅帇緙?(浣跨敤BI_RGB琛ㄧず) 1 - RLE 8-浣跨敤8浣峈LE鍘嬬緝鏂瑰紡(鐢˙I_RLE8琛ㄧず) 2 - RLE 4-浣跨敤4浣峈LE鍘嬬緝鏂瑰紡(鐢˙I_RLE4琛ㄧず) 3 - Bitfields-浣嶅煙瀛樻斁鏂瑰紡(鐢˙I_BITFIELDS琛ㄧず) |
||||||||
| 銆 | 0022h | Bitmap Data Size | 1 dword | 鐢ㄥ瓧鑺傛暟琛ㄧず鐨勪綅鍥炬暟鎹殑澶у皬銆傝鏁板繀欏繪槸4鐨勫嶆暟 | ||||||||
| 銆 | 0026h | HResolution | 1 dword | 鐢ㄨ薄绱?綾寵〃紺虹殑姘村鉤鍒嗚鯨鐜?/td> | ||||||||
| 銆 | 002Ah | VResolution | 1 dword | 鐢ㄨ薄绱?綾寵〃紺虹殑鍨傜洿鍒嗚鯨鐜?/td> | ||||||||
| 銆 | 002Eh | Colors | 1 dword | 浣嶅浘浣跨敤鐨勯鑹叉暟銆傚8-姣旂壒/璞$礌琛ㄧず涓?00h鎴栬?256. | ||||||||
| 銆 | 0032h | Important Colors | 1 dword | 鎸囧畾閲嶈鐨勯鑹叉暟銆傚綋璇ュ煙鐨勫肩瓑浜庨鑹叉暟鏃訛紙鎴栬呯瓑浜?鏃訛級錛岃〃紺烘墍鏈夐鑹查兘涓鏍烽噸瑕?/td> | ||||||||
| 璋冭壊鏉挎暟鎹?/td> | 鏍規嵁BMP鐗堟湰鐨勪笉鍚岃屼笉鍚?/td> | Palette | N * 4 byte | 璋冭壊鏉胯鑼冦傚浜庤皟鑹叉澘涓殑姣忎釜琛ㄩ」錛岃繖4涓瓧鑺傜敤涓嬭堪鏂規硶鏉ユ弿榪癛GB鐨勫鹼細
|
||||||||
| 鍥捐薄鏁版嵁 | 鏍規嵁BMP鐗堟湰鍙婅皟鑹叉澘灝哄鐨勪笉鍚岃屼笉鍚?/td> | Bitmap Data | xxx bytes | 璇ュ煙鐨勫ぇ灝忓彇鍐充簬鍘嬬緝鏂規硶鍙婂浘鍍忕殑灝哄鍜屽浘鍍忕殑浣嶆繁搴︼紝瀹冨寘鍚墍鏈夌殑浣嶅浘鏁版嵁瀛楄妭錛岃繖浜涙暟鎹彲鑳芥槸褰╄壊璋冭壊鏉跨殑绱㈠紩鍙鳳紝涔熷彲鑳芥槸瀹為檯鐨凴GB鍊鹼紝榪欏皢鏍規嵁鍥懼儚淇℃伅澶翠腑鐨勪綅娣卞害鍊兼潵鍐沖畾銆?/td> |
1. 浣嶅浘鏂囦歡澶?/p> 浣嶅浘鏂囦歡澶村寘鍚湁鍏充簬鏂囦歡綾誨瀷銆佹枃浠跺ぇ灝忋佸瓨鏀句綅緗瓑淇℃伅錛屽湪Windows 3.0浠ヤ笂鐗堟湰鐨勪綅鍥炬枃浠朵腑鐢˙ITMAPFILEHEADER緇撴瀯鏉ュ畾涔夛細 typedef struct tagBITMAPFILEHEADER { /* bmfh */ UINT bfType; } BITMAPFILEHEADER;
鍏朵腑錛?
2. 浣嶅浘淇℃伅澶?/p> 浣嶅浘淇℃伅鐢˙ITMAPINFO緇撴瀯鏉ュ畾涔夛紝瀹冪敱浣嶅浘淇℃伅澶?bitmap-information header)鍜屽僵鑹茶〃(color table)緇勬垚錛屽墠鑰呯敤BITMAPINFOHEADER緇撴瀯瀹氫箟錛屽悗鑰呯敤RGBQUAD緇撴瀯瀹氫箟銆侭ITMAPINFO緇撴瀯鍏鋒湁濡備笅褰㈠紡錛?/p> typedef struct tagBITMAPINFO { /* bmi */ BITMAPINFOHEADER bmiHeader; } BITMAPINFO;
鍏朵腑錛?
BITMAPINFOHEADER緇撴瀯鍖呭惈鏈変綅鍥炬枃浠剁殑澶у皬銆佸帇緙╃被鍨嬪拰棰滆壊鏍煎紡錛屽叾緇撴瀯瀹氫箟涓猴細 typedef struct tagBITMAPINFOHEADER { /* bmih */ DWORD biSize; } BITMAPINFOHEADER;
鍏朵腑錛?
鐜板氨BITMAPINFOHEADER緇撴瀯浣滃涓嬭鏄庯細 (1) 褰╄壊琛ㄧ殑瀹氫綅 搴旂敤紼嬪簭鍙嬌鐢ㄥ瓨鍌ㄥ湪biSize鎴愬憳涓殑淇℃伅鏉ユ煡鎵懼湪BITMAPINFO緇撴瀯涓殑褰╄壊琛紝濡備笅鎵紺猴細 pColor = ((LPSTR) pBitmapInfo + (WORD) (pBitmapInfo->bmiHeader.biSize)) (2) biBitCount biBitCount=1 琛ㄧず浣嶅浘鏈澶氭湁涓ょ棰滆壊錛岀己鐪佹儏鍐典笅鏄粦鑹插拰鐧借壊錛屼綘涔熷彲浠ヨ嚜宸卞畾涔夎繖涓ょ棰滆壊銆傚浘鍍忎俊鎭ご瑁呰皟鑹叉澘涓皢鏈変袱涓皟鑹叉澘欏癸紝縐頒負绱㈠紩0鍜岀儲寮?銆傚浘璞℃暟鎹樀鍒椾腑鐨勬瘡涓浣嶈〃紺轟竴涓薄绱犮傚鏋滀竴涓綅鏄?錛屾樉紺烘椂灝變嬌鐢ㄧ儲寮?鐨凴GB鍊鹼紝濡傛灉浣嶆槸1錛屽垯浣跨敤绱㈠紩1鐨凴GB鍊箋?/p> biBitCount=4 琛ㄧず浣嶅浘鏈澶氭湁16縐嶉鑹層傛瘡涓薄绱犵敤4浣嶈〃紺猴紝騫剁敤榪?浣嶄綔涓哄僵鑹茶〃鐨勮〃欏規潵鏌ユ壘璇ヨ薄绱犵殑棰滆壊銆備緥濡傦紝濡傛灉浣嶅浘涓殑絎竴涓瓧鑺備負0x1F錛屽畠琛ㄧず鏈変袱涓薄绱狅紝絎竴璞$礌鐨勯鑹插氨鍦ㄥ僵鑹茶〃鐨勭2琛ㄩ」涓煡鎵撅紝鑰岀浜屼釜璞$礌鐨勯鑹插氨鍦ㄥ僵鑹茶〃鐨勭16琛ㄩ」涓煡鎵俱傛鏃訛紝璋冭壊鏉夸腑緙虹渷鎯呭喌涓嬩細鏈?6涓猂GB欏廣傚搴斾簬绱㈠紩0鍒扮儲寮?5銆?/p> biBitCount=8 琛ㄧず浣嶅浘鏈澶氭湁256縐嶉鑹層傛瘡涓薄绱犵敤8浣嶈〃紺猴紝騫剁敤榪?浣嶄綔涓哄僵鑹茶〃鐨勮〃欏規潵鏌ユ壘璇ヨ薄绱犵殑棰滆壊銆備緥濡傦紝濡傛灉浣嶅浘涓殑絎竴涓瓧鑺備負0x1F錛岃繖涓薄绱犵殑棰滆壊灝卞湪褰╄壊琛ㄧ殑絎?2琛ㄩ」涓煡鎵俱傛鏃訛紝緙虹渷鎯呭喌涓嬶紝璋冭壊鏉夸腑浼氭湁256涓猂GB欏癸紝瀵瑰簲浜庣儲寮?鍒扮儲寮?55銆?/p> biBitCount=16 琛ㄧず浣嶅浘鏈澶氭湁216縐嶉鑹層傛瘡涓壊绱犵敤16浣嶏紙2涓瓧鑺傦級琛ㄧず銆傝繖縐嶆牸寮忓彨浣滈珮褰╄壊錛屾垨鍙寮哄瀷16浣嶈壊錛屾垨64K鑹層傚畠鐨勬儏鍐墊瘮杈冨鏉傦紝褰揵iCompression鎴愬憳鐨勫兼槸BI_RGB鏃訛紝瀹冩病鏈夎皟鑹叉澘銆?6浣嶄腑錛屾渶浣庣殑5浣嶈〃紺鴻摑鑹插垎閲忥紝涓棿鐨?浣嶈〃紺虹豢鑹插垎閲忥紝楂樼殑5浣嶈〃紺虹孩鑹插垎閲忥紝涓鍏卞崰鐢ㄤ簡15浣嶏紝鏈楂樼殑涓浣嶄繚鐣欙紝璁句負0銆傝繖縐嶆牸寮忎篃琚О浣?55 16浣嶄綅鍥俱傚鏋渂iCompression鎴愬憳鐨勫兼槸BI_BITFIELDS錛岄偅涔堟儏鍐靛氨澶嶆潅浜嗭紝棣栧厛鏄師鏉ヨ皟鑹叉澘鐨勪綅緗涓変釜DWORD鍙橀噺鍗犳嵁錛岀О涓虹孩銆佺豢銆佽摑鎺╃爜銆傚垎鍒敤浜庢弿榪扮孩銆佺豢銆佽摑鍒嗛噺鍦?6浣嶄腑鎵鍗犵殑浣嶇疆銆傚湪Windows 95錛堟垨98錛変腑錛岀郴緇熷彲鎺ュ彈涓ょ鏍煎紡鐨勪綅鍩燂細555鍜?65錛屽湪555鏍煎紡涓嬶紝綰€佺豢銆佽摑鐨勬帺鐮佸垎鍒槸錛?x7C00銆?x03E0銆?x001F錛岃屽湪565鏍煎紡涓嬶紝瀹冧滑鍒欏垎鍒負錛?xF800銆?x07E0銆?x001F銆備綘鍦ㄨ鍙栦竴涓儚绱犱箣鍚庯紝鍙互鍒嗗埆鐢ㄦ帺鐮?#8220;涓?#8221;涓婂儚绱犲鹼紝浠庤屾彁鍙栧嚭鎯寵鐨勯鑹插垎閲忥紙褰撶劧榪樿鍐嶇粡榪囬傚綋鐨勫乏鍙崇Щ鎿嶄綔錛夈傚湪NT緋葷粺涓紝鍒欐病鏈夋牸寮忛檺鍒訛紝鍙笉榪囪姹傛帺鐮佷箣闂翠笉鑳芥湁閲嶅彔銆傦紙娉細榪欑鏍煎紡鐨勫浘鍍忎嬌鐢ㄨ搗鏉ユ槸姣旇緝楹葷儲鐨勶紝涓嶈繃鍥犱負瀹冪殑鏄劇ず鏁堟灉鎺ヨ繎浜庣湡褰╋紝鑰屽浘鍍忔暟鎹張姣旂湡褰╁浘鍍忓皬鐨勫錛屾墍浠ワ紝瀹冩洿澶氱殑琚敤浜庢父鎴忚蔣浠訛級銆?/p> biBitCount=24 琛ㄧず浣嶅浘鏈澶氭湁224縐嶉鑹層傝繖縐嶄綅鍥炬病鏈夎皟鑹叉澘錛坆miColors鎴愬憳灝哄涓?錛夛紝鍦ㄤ綅鏁扮粍涓紝姣?涓瓧鑺備唬琛ㄤ竴涓薄绱狅紝鍒嗗埆瀵瑰簲浜庨鑹睷銆丟銆丅銆?/p> biBitCount=32 琛ㄧず浣嶅浘鏈澶氭湁232縐嶉鑹層傝繖縐嶄綅鍥劇殑緇撴瀯涓?6浣嶄綅鍥劇粨鏋勯潪甯哥被浼鹼紝褰揵iCompression鎴愬憳鐨勫兼槸BI_RGB鏃訛紝瀹冧篃娌℃湁璋冭壊鏉匡紝32浣嶄腑鏈?4浣嶇敤浜庡瓨鏀綬GB鍊鹼紝欏哄簭鏄細鏈楂樹綅鈥斾繚鐣欙紝綰?浣嶃佺豢8浣嶃佽摑8浣嶃傝繖縐嶆牸寮忎篃琚垚涓?88 32浣嶅浘銆傚鏋?biCompression鎴愬憳鐨勫兼槸BI_BITFIELDS鏃訛紝鍘熸潵璋冭壊鏉跨殑浣嶇疆灝嗚涓変釜DWORD鍙橀噺鍗犳嵁錛屾垚涓虹孩銆佺豢銆佽摑鎺╃爜錛屽垎鍒敤浜庢弿榪扮孩銆佺豢銆佽摑鍒嗛噺鍦?2浣嶄腑鎵鍗犵殑浣嶇疆銆傚湪Windows 95(or 98)涓紝緋葷粺鍙帴鍙?88鏍煎紡錛屼篃灝辨槸璇翠笁涓帺鐮佺殑鍊煎皢鍙兘鏄細0xFF0000銆?xFF00銆?xFF銆傝屽湪NT緋葷粺涓紝浣犲彧瑕佹敞鎰忎嬌鎺╃爜涔嬮棿涓嶄駭鐢熼噸鍙犲氨琛屻傦紙娉細榪欑鍥懼儚鏍煎紡姣旇緝瑙勬暣錛屽洜涓哄畠鏄疍WORD瀵歸綈鐨勶紝鎵浠ュ湪鍐呭瓨涓繘琛屽浘鍍忓鐞嗘椂鍙繘琛屾眹緙栫駭鐨勪唬鐮佷紭鍖栵紙綆鍗曪級錛夈?/p> (3) ClrUsed BITMAPINFOHEADER緇撴瀯涓殑鎴愬憳ClrUsed鎸囧畾瀹為檯浣跨敤鐨勯鑹叉暟鐩傚鏋淐lrUsed璁劇疆鎴?錛屼綅鍥句嬌鐢ㄧ殑棰滆壊鏁扮洰灝辯瓑浜巄iBitCount鎴愬憳涓殑鏁扮洰銆傝娉ㄦ剰錛屽鏋淐lrUsed鐨勫間笉鏄彲鐢ㄩ鑹茬殑鏈澶у兼垨涓嶆槸0錛屽垯鍦ㄧ紪紼嬫椂搴旇娉ㄦ剰璋冭壊鏉垮昂瀵哥殑璁$畻錛屾瘮濡傚湪4浣嶄綅鍥句腑錛岃皟鑹叉澘鐨勭己鐪佸昂瀵稿簲璇ユ槸16錛妔izeof(RGBQUAD)錛屼絾鏄紝濡傛灉ClrUsed鐨勫間笉鏄?6鎴栬呬笉鏄?錛岄偅涔堣皟鑹叉澘鐨勫昂瀵稿氨搴旇鏄疌lrUsed錛妔izeof(RGBQUAD)銆?/p> (4) 鍥捐薄鏁版嵁鍘嬬緝 鈶?BI_RLE8錛氭瘡涓薄绱犱負8姣旂壒鐨凴LE鍘嬬緝緙栫爜錛屽彲浣跨敤緙栫爜鏂瑰紡鍜岀粷瀵規柟寮忎腑鐨勪換浣曚竴縐嶈繘琛屽帇緙╋紝榪欎袱縐嶆柟寮忓彲鍦ㄥ悓涓騫呭浘涓殑浠諱綍鍦版柟浣跨敤銆?/p> 緙栫爜鏂瑰紡錛氱敱2涓瓧鑺傜粍鎴愶紝絎竴涓瓧鑺傛寚瀹氫嬌鐢ㄧ浉鍚岄鑹茬殑璞$礌鏁扮洰錛岀浜屼釜瀛楄妭鎸囧畾浣跨敤鐨勯鑹茬儲寮曘傛澶栵紝榪欎釜瀛楄妭瀵逛腑鐨勭涓涓瓧鑺傚彲璁劇疆涓?錛岃仈鍚堜嬌鐢ㄧ浜屼釜瀛楄妭鐨勫艱〃紺猴細
緇濆鏂瑰紡錛氱涓涓瓧鑺傝緗負0錛岃岀浜屼釜瀛楄妭璁劇疆涓?x03锝?xFF涔嬮棿鐨勪竴涓箋傚湪榪欑鏂瑰紡涓紝絎簩涓瓧鑺傝〃紺鴻窡鍦ㄨ繖涓瓧鑺傚悗闈㈢殑瀛楄妭鏁幫紝姣忎釜瀛楄妭鍖呭惈鍗曚釜璞$礌鐨勯鑹茬儲寮曘傚帇緙╂暟鎹牸寮忛渶瑕佸瓧杈圭晫(word boundary)瀵歸綈銆備笅闈㈢殑渚嬪瓙鏄敤16榪涘埗琛ㄧず鐨?-浣嶅帇緙╁浘璞℃暟鎹細 03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 02 78 00 00 09 1E 00 01
鈶?BI_RLE4錛氭瘡涓薄绱犱負4姣旂壒鐨凴LE鍘嬬緝緙栫爜錛屽悓鏍蜂篃鍙嬌鐢ㄧ紪鐮佹柟寮忓拰緇濆鏂瑰紡涓殑浠諱綍涓縐嶈繘琛屽帇緙╋紝榪欎袱縐嶆柟寮忎篃鍙湪鍚屼竴騫呭浘涓殑浠諱綍鍦版柟浣跨敤銆傝繖涓ょ鏂瑰紡鏄細 緙栫爜鏂瑰紡錛氱敱2涓瓧鑺傜粍鎴愶紝絎竴涓瓧鑺傛寚瀹氳薄绱犳暟鐩紝絎簩涓瓧鑺傚寘鍚袱縐嶉鑹茬儲寮曪紝涓涓湪楂?浣嶏紝鍙︿竴涓湪浣?浣嶃傜涓涓薄绱犱嬌鐢ㄩ珮4浣嶇殑棰滆壊绱㈠紩錛岀浜屼釜浣跨敤浣?浣嶇殑棰滆壊绱㈠紩錛岀3涓嬌鐢ㄩ珮4浣嶇殑棰滆壊绱㈠紩錛屼緷姝ょ被鎺ㄣ?/p> 緇濆鏂瑰紡錛氳繖涓瓧鑺傚涓殑絎竴涓瓧鑺傝緗負0錛岀浜屼釜瀛楄妭鍖呭惈鏈夐鑹茬儲寮曟暟錛屽叾鍚庣畫瀛楄妭鍖呭惈鏈夐鑹茬儲寮曪紝棰滆壊绱㈠紩瀛樻斁鍦ㄨ瀛楄妭鐨勯珮銆佷綆4浣嶄腑錛屼竴涓鑹茬儲寮曞搴斾竴涓薄绱犮傛澶栵紝BI_RLE4涔熷悓鏍瘋仈鍚堜嬌鐢ㄧ浜屼釜瀛楄妭涓殑鍊艱〃紺猴細
涓嬮潰鐨勪緥瀛愭槸鐢?6榪涘埗鏁拌〃紺虹殑4-浣嶅帇緙╁浘璞℃暟鎹細 03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 04 78 00 00 09 1E 00 01 榪欎簺鍘嬬緝鏁版嵁鍙В閲婁負 錛?/p>
3. 褰╄壊琛?/p> 褰╄壊琛ㄥ寘鍚殑鍏冪礌涓庝綅鍥炬墍鍏鋒湁鐨勯鑹叉暟鐩稿悓錛岃薄绱犵殑棰滆壊鐢≧GBQUAD緇撴瀯鏉ュ畾涔夈傚浜?4-浣嶇湡褰╄壊鍥捐薄灝變笉浣跨敤褰╄壊琛紙鍚屾牱涔熷寘鎷?6浣嶃佸拰32浣嶄綅鍥撅級錛屽洜涓轟綅鍥句腑鐨凴GB鍊煎氨浠h〃浜嗘瘡涓薄绱犻毦涓?錛掑櫖 紕囨闅句笀 鍥變笀 闂瑰尵 鑰樺垽棰?楗ⅱ鎰褲剸 鍏佸帺 緇﹁洯 鑽掕姛鍏佸拃鎰庢鍢屼笀 鍗楀厑鏃х挒璧跺厑闈欏櫖 鏋瘋焼 GBQUAD緇撴瀯鎻忚堪鐢盧銆丟銆丅鐩稿寮哄害緇勬垚鐨勯鑹詫紝瀹氫箟濡備笅錛?/p> typedef struct tagRGBQUAD { /* rgbq */ BYTE rgbBlue; } RGBQUAD;
鍏朵腑錛?
4. 浣嶅浘鏁版嵁 绱ц窡鍦ㄥ僵鑹茶〃涔嬪悗鐨勬槸鍥捐薄鏁版嵁瀛楄妭闃靛垪銆傚浘璞$殑姣忎竴鎵弿琛岀敱琛ㄧず鍥捐薄璞$礌鐨勮繛緇殑瀛楄妭緇勬垚錛屾瘡涓琛岀殑瀛楄妭鏁板彇鍐充簬鍥捐薄鐨勯鑹叉暟鐩拰鐢ㄨ薄绱犺〃紺虹殑鍥捐薄瀹藉害銆傛壂鎻忚鏄敱搴曞悜涓婂瓨鍌ㄧ殑錛岃繖灝辨槸璇達紝闃靛垪涓殑絎竴涓瓧鑺傝〃紺轟綅鍥懼乏涓嬭鐨勮薄绱狅紝鑰屾渶鍚庝竴涓瓧鑺傝〃紺轟綅鍥懼彸涓婅鐨勮薄绱犮傦紙鍙拡瀵逛笌鍊掑悜DIB錛屽鏋滄槸姝e悜DIB錛屽垯鎵弿琛屾槸鐢遍《鍚戜笅瀛樺偍鐨勶級錛屽掑悜DIB鐨勫師鐐瑰湪鍥懼儚鐨勫乏涓嬭錛岃屾鍚慏IB鐨勫師鐐瑰湪鍥懼儚鐨勫乏涓婅銆傚悓鏃訛紝姣忎竴鎵弿琛岀殑瀛楄妭鏁板繀闇鏄?鐨勬暣鍊嶆暟錛屼篃灝辨槸DWORD瀵歸綈鐨勩傚鏋滀綘鎯崇‘淇濆浘鍍忕殑鎵弿琛孌WORD瀵歸綈錛屽彲浣跨敤涓嬮潰鐨勪唬鐮侊細 |