½ÌѧÎÄ¿âÍø - ȨÍþÎĵµ·ÖÏíÔÆÆ½Ì¨
ÄúµÄµ±Ç°Î»ÖãºÊ×Ò³ > ¾«Æ·Îĵµ > ×ÛºÏÎĵµ >

TjpgDec¼¼ÊõÊֲᣨÖÐÎİ棩 - ͼÎÄ(2)

À´Ô´£ºÍøÂçÊÕ¼¯ ʱ¼ä£º2026-05-22
µ¼¶Á£º JDR_MEM2£ºÊäÈ뻺³åÇøµÄÈÝÁ¿¹ýС£¬ JD_SZBUFÊý¾Ý¹ýÐ £ JDR_PAR£ºÈë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄ¹¤×÷ÇøÖ¸ÕëΪNULL. JDR_FMT1: Èë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄJPEGÊý¾ÝÎÞ·¨¶ÁÈ¡ JDR_FMT2£º·ÇJPEGͼÏñ JDR_FMT3£º·Ç±ê×¼¸ñʽµÄ²ÊÉ«JPEGͼ

JDR_MEM2£ºÊäÈ뻺³åÇøµÄÈÝÁ¿¹ýС£¬ JD_SZBUFÊý¾Ý¹ýС¡£ JDR_PAR£ºÈë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄ¹¤×÷ÇøÖ¸ÕëΪNULL. JDR_FMT1: Èë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄJPEGÊý¾ÝÎÞ·¨¶ÁÈ¡ JDR_FMT2£º·ÇJPEGͼÏñ

JDR_FMT3£º·Ç±ê×¼¸ñʽµÄ²ÊÉ«JPEGͼÏñ ±¸×¢£º

jd_prepareº¯ÊýÊÇÖ´ÐÐJPEGͼƬ½âÂëµÄµÚÒ»²½¹¤×÷. ´Ëº¯ÊýÓÃÓÚ·ÖÎöJPEGͼƬµÄÐÅÏ¢£¬²¢ÎªºóÐøµÄ½âÂë¹ý³Ì´´½¨Ò»¸ö½âÂë¶ÔÏ󡣴˺¯Êýµ÷Óóɹ¦ºó,±ã¿ÉÒÔµ÷ÓÃjd_decompº¯ÊýÖ´ÐнâÂëµÄ¹¤×÷¡£´Ëº¯Êý¿ÉÒÔÌáÈ¡JPEGµÄ³ß´ç²ÎÊý£¬¿ÉÓÃÓÚÅäÖÃÓû§×Ô¶¨ÒåµÄ¶ÔÏóÐÅÏ¢£¬ÒÔ¼°ÓÃÓÚºóÐøµÄ½âѹ¹¤×÷¡£

2. jd_decomp

º¯Êý¹¦ÄÜ£º½âѹJPEGͼƬ£¬²¢Êä³öRGB¸ñʽµÄÊý¾Ý º¯ÊýÍ·£ºJRESULT jd_decomp (

JDEC* jdec, /* Ö¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó */ UINT(*outfunc)(JDEC*,void*,JRECT*), /* Ö¸ÏòÊä³öº¯ÊýµÄÖ¸Õë */ BYTE scale /* ͼÏñ½âѹ³ß´ç±ÈÀýÅäÖà */ ); Èë¿Ú²ÎÊý£º

Jdec£ºÖ¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó

£¨*outfunc£©£ºÖ¸ÏòÒ»¸öÓû§¶¨ÒåµÄÊä³öº¯Êý.ÓÃÓÚÒÔRGB¸ñʽÊä³öͼƬµÄÊý¾Ý¡£

Scale£ºÅäÖÃͼÏñ½âѹËõÊä³ö³ß´ç±ÈÀý£¬Êä³öͼÏñµÄ±ÈÀý±»ÅäÖÃΪ 1 / 2 ^ N (N = 0 to 3).ÕâÀïÐèÒªÅäÖõıãÊÇNµÄ´óС£¬Èç¹ûÊä³ö±ÈÀý¹¦Äܱ»¹Ø±Õ (JD_USE_SCALE == 0),ÄÇôÕâ¸öÊý¾Ý±ØÐëÊÇ0£» ·µ»ØÖµ£º

JDR_OK£ºº¯ÊýÖ´Ðгɹ¦ JDR_INTR£º½âѹËõµÄ¹¤×÷±»Êä³öº¯ÊýÖжϣ¬¼´Êä³öº¯ÊýÖгöÏÖ´íÎó»òÕßÊä³öº¯ÊýÃüÁî±¾º¯Êý½âÂëÖÐÖ¹¡£ JDR_INP£ºÓÉÓÚ´ÅÅÌ´íÎó»òÕß´íÎóµÄÊý¾Ý½áÊø±êʶ¶øµ¼ÖÂÊäÈ뺯ÊýÔËÐÐʧ°Ü JDR_PAR£º¸ø¶¨µÄͼÏñÊä³ö±ÈÀý²ÎÊý´íÎó

JDR_FMT1£ºÊý¾Ý½á¹¹´íÎó£¬ÎÞ·¨¼ÓÔØJPEGͼƬµÄÊý¾Ý ±¸×¢£º

jd_decompº¯ÊýÊǽâÂëÒ»¸öJPEGͼƬµÄµÚ¶þ²½¹¤×÷.´Ëº¯Êý½âÂëJPEGͼƬ£¬²¢Í¨¹ýÓû§ÌṩµÄÊä³öº¯ÊýÊä³ö½âÂëµÃµ½µÄRGBÊý¾Ý.´Ëº¯ÊýÖ´ÐйýÒԺ󣬴ý½âÂë¶ÔÏó×Ô¶¯Ê§Ð§¡£

ͼÏñÊä³ö±ÈÀý²ÎÊý¿ÉÒÔ±»Ô¤Éè.Ëü¿ÉÒÔ±»Ô¤ÉèΪ 1/2, 1/4 »òÕß 1/8.ÀýÈ磺 µ±Ê¹ÓÃ1/4µÄͼÏñÊä³ö±ÈÀý½âÂëÒ»¸ö´óСΪ1024x768µÄJPEG ͼÏñʱ,ËüµÄÊä³ö³ß´ç½«»áÊÇ 256x192. Ò»°ãÇé¿öÏ£¬Í¼ÏñÊä³ö±ÈÀýΪ1/2¡¢1/4ʱ£¬Óë²»½øÐбÈÀýÊä³öʱÏà±È»áÇá΢µÄ½µµÍ½âÂëµÄËÙ¶È¡£µ«Êǵ±Í¼ÏñÊä³ö±ÈÀýµÈÓÚ 1/8 ʱ£¬½«»á±ÈÎÞÊä³ö±ÈÀýʱ¿ì 2/3 ʱ¼ä£¬ÒòΪ½âÂëµÄ²¿·Ö¹¦Äܽ«»á±»Ê¡ÂÔ. Õâ¸öÌØÐÔ±»ÓÃÓÚ²úÉúËõÂÔͼ¡£ 3.Input Function

º¯Êý¹¦ÄÜ£ºÓû§×Ô¶¨ÒåµÄÓÃÓÚÊäÈëÊý¾ÝµÄº¯Êý

º¯ÊýÍ·£ºUINT in_func ( JDEC* jdec, /* Ö¸Ïò´ý½âÂë¶ÔÏóµÄÖ¸Õë */ BYTE* buff, /* Ö¸ÏòÓÃÓÚ´æ´¢¶ÁÈ¡µÄÊý¾ÝµÄ»º³åÇøµÄÖ¸Õë */ UINT ndata /* ´ý¶ÁÈ¡Êý¾ÝµÄÊýÁ¿ */ );

Èë¿Ú²ÎÊý£º

Jdec£ºÖ¸Ïò´ý½âÂë¶ÔÏóµÄÖ¸Õë Buff£ºÖ¸ÏòÓÃÓÚ´æ´¢¶ÁÈ¡µÄÊý¾ÝµÄ»º³åÇøµÄÖ¸Õë. µ±´ËÖ¸ÕëΪNULLʱ£¬½«´ÓÊäÈëÊý¾ÝÁ÷ÖÐɾ³ýÊý¾Ý¡£ Ndata£ºÖ¸¶¨½«Òª´ÓÊäÈëÊý¾ÝÁ÷ÖжÁÈ¡/ɾ³ýµÄÊý¾ÝµÄ×Ö½ÚÊý¡£ ·µ»ØÖµ£º

·µ»Ø¶ÁÈ¡/ɾ³ýµÄ×Ö½ÚÊýÄ¿£»Èç¹û·µ»ØÖµÎª0£¬Ôòjd_prepareºÍjd_decompº¯Êý½«·µ»ØJDR_INP¡£ ±¸×¢£º

´Ëº¯ÊýÊÇTjpgDecÄ£¿éµÄÊý¾ÝÊäÈë½Ó¿Ú. ÏàÓ¦µÄ½âÂëÁ÷³Ì»áʹÓñ»´«µÝ¸øº¯Êýjd_prepareµÄµÚ5¸öÈë¿Ú²ÎÊýµÄÊý¾Ý½øÐнâÂ빤×÷£¬´Ë²ÎÊýÊÇÓû§×Ô¶¨ÒåµÄ½âÂë¶ÔÏóÐÅÏ¢£¬±»´æ´¢ÓÚ jdec->device ¡££¨ÒëÕß×¢£ºÔÚMCUµÄÓ¦ÓÃÖУ¬´ËÊý¾ÝÀàÐͽöʹÓÃFILÀàÐÍÓÃÒÔÖ¸ÏòÒ»¸ö´ý½âÂëµÄJPEGÎļþ£© 4. Output Function

º¯Êý¹¦ÄÜ£ºÓû§×Ô¶¨ÒåµÄÊä³öº¯Êý£¬ÓÃÓÚÏòÊä³öÉ豸Êä³ö½âÂëºóµÄͼƬÊý¾Ý º¯ÊýÍ·£ºUINT out_func ( JDEC* jdec, /*Ö¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó*/ void* bitmap, /*Ö¸ÏòÒѽâÂëºÃµ«µÈ´ýÊä³öµÄRGBλͼÊý¾ÝµÄÖ¸Õë*/ JRECT* rect /* bitmapËù´ú±íµÄ´ýÊä³öµÄÏñËØ¿éµÄ´óС */ ); Èë¿Ú²ÎÊý£º

Jdec£ºÖ¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó

Bitmap£ºÖ¸ÏòÒѽâÂëºÃµ«µÈ´ýÊä³öµÄRGBλͼÊý¾ÝµÄÖ¸Õë

Rect: bitmapËù´ú±íµÄ´ýÊä³öµÄÏñËØ¿éµÄ³ß´ç´óС£¨ÒëÕß×¢£º¿´Æä¶¨Òå¿ÉÖª£¬´Ë½á¹¹ÌåʹÓá°ÉÏÏÂ×óÓÒ¡±µÄÖµÀ´±íʾһ¸ö¾ØÐÎͼƬÏñËØ¿éµÄËĸöµã£©

·µ»ØÖµ£ºÒ»°ãÇé¿öÏ·µ»Ø1.Õâ¸ö·µ»ØÖµ½«ÔÊÐíTjpgDecÄ£¿é¼ÌÐø½øÐнâÂ빤×÷¡£µ±ËüµÄ·µ»ØÖµÎª0ʱ£¬jd_decompº¯Êý½«»áÖÕÖ¹½âÂ빤×÷£¬²¢·µ»ØJDR_INTR¡£ÕâÖÖÀûÓÃout_funcµÄ·µ»ØÖµÀ´ÖÕÖ¹½âÂëµÄ·½Ê½£¬ÊǷdz£ÓÐÓõġ£ ±¸×¢£º ´Ëº¯ÊýÊÇTjpgDecÄ£¿éµÄÊä³ö½Ó¿Ú¡£ÏàÓ¦µÄ½âÂëÁ÷³Ì»áʹÓñ»´«µÝ¸øº¯Êýjd_prepareµÄµÚ5¸öÈë¿Ú²ÎÊýµÄÊý¾Ý½øÐнâÂ빤×÷£¬´Ë²ÎÊýÊÇÓû§×Ô¶¨ÒåµÄ½âÂë¶ÔÏóÐÅÏ¢£¬±»´æ´¢ÓÚ jdec->device ¡££¨ÒëÕß×¢£ºÔÚMCUµÄÓ¦ÓÃÖУ¬´ËÊý¾ÝÀàÐͽöʹÓÃFILÀàÐÍÓÃÒÔÖ¸ÏòÒ»¸ö´ý½âÂëµÄJPEGÎļþ£© ½âѹºóµÃµ½µÄRGBλͼÊý¾Ý¿ÉÒÔÔڴ˺¯ÊýÖб»·¢Ë͵½ÏÔʾÉ豸»òÕßÊý¾Ý»º³åÇø£¬RGBλͼÊý¾ÝµÄµÚÒ»¸öÊý¾ÝÊÇͼƬµÄ×óÉϽǵľØÐοéµÄÏñËØÊý¾Ý£¬µÚ¶þ¸öÊý¾ÝÊÇÓÒ±ßÒ»¸ö¾ØÐοéµÄÏñËØÊý¾Ý£¬×îºóÒ»¸öÊý¾ÝÊÇͼƬÓÒϽǵľØÐοéµÄÏñËØÊý¾Ý¡£ ÿһ¸ö¾ØÐÎÏñËØ¿éµÄ´óСÊǸù¾Ý²Ã¼ô·½Ê½ºÍͼÏñÊä³ö±ÈÀýµÄ²»Í¬¶ø´Ó1x1µ½16x16²»µÈµÄ£¨ÒëÕß×¢£ºÏñËØ¿éµÄ´óСÊÇTjpgDec×ÔÓÉÑ¡ÔñµÄ£¬Óû§ÎÞ·¨Ö¸¶¨£©¡£Èç¹û¾ØÐοéµÄ´óС³¬¹ýÁËÊý¾Ý»º³åÇøµÄÈÝÁ¿£¬ÄÇôÔÚÕâ¸öÊä³öº¯ÊýÖÐÐèÒª½øÐÐÒ»¶¨µÄ²Ã¼ô¡£

£¨ÒëÕß×¢£ºÔÚTjpgDecÄ£¿éÖУ¬Í¼ÏñµÄÏñËØÊý¾ÝµÄÊä³öÊÇÒÔÏñËØ¿éΪµ¥Î»µÄ£¬ÀýÈ磺µ±Ê¹ÓÃLCDÏÔʾͼƬʱ£¬¿ÉÒÔ¿´µ½Í¼Æ¬ÊÇÒÔÒ»¿éÒ»¿éµÄÐÎʽ´Ó×óÉϽǵ½ÓÒϽǰÑÕû¸öͼƬÏÔʾ³öÀ´µÄ¡£ËùÒÔ£¬ÔÚMCUµÄʹÓÃÖУ¬µ±Ê¹ÓÃTFTLCDÏÔʾͼƬʱ£¬ÐèÒªÔÚÕâ¸öÊä³öº¯ÊýÖÐÏȸù¾ÝrectÌṩµÄÖµÔÚLCDÉ϶¨Òå³öÒ»¸öͼƬÏÔʾµÄ¾ØÐδ°¿Ú£¬È»ºóÔÙ°ÑbitmapÊý¾ÝÊä³öµ½Õâ¸ö¾ØÐδ°¿ÚÖУ¬¶øTjpgDec»á¸ù¾ÝͼƬµÄÐÅÏ¢×Ô¶¯¸Ä±ärectµÄÖµ£¬Óû§²»ÓüÆËãÏÂÒ»¸öÏñËØ¿éµÄÏÔʾλÖᣣ© RGBλͼÊý¾ÝµÄ¸ñʽÐèҪʹÓÃÅäÖÃÑ¡ÏîÖеÄJD_FORMAT½øÐж¨Òå¡££¨ÔÚÎļþtjpgd.hÖУ© µ±¶¨ÒåΪ24Î»Õæ²ÊÉ«£¨RGB888£©Ê±£¬RGBλͼÊý¾ÝʹÓÃ3¸ö×Ö½Ú±íʾһ¸öÏñËØµã£ºRRRRRRRR, GGGGGGGG, BBBBBBBB, RRRRRRRR, GGGGGGGG, BBBBBBBB, ... µ±¶¨ÒåΪRGB565¸ñʽʱ£¬RGBλͼÊý¾ÝʹÓÃÒ»¸ö°ë×Ö£¨16룩µÄÊý¾Ý±íʾһ¸öÏñËØµã£ºRRRRRGGGGGGBBBBB, RRRRRGGGGGGBBBBB, RRRRRGGGGGGBBBBB, ...

µÚÈýÕ º¯ÊýÖÐʹÓõĽṹÌå

1. JDEC£º´Ë½á¹¹Ìå´æ´¢ÓйؽâÂëʹÓõÄÊý¾Ý¡¢Ö¸ÕëºÍ¸÷ÖÖ±êÖ¾¡££¨´ý½âÂë¶ÔÏóÐÅÏ¢¼Ç¼±í£© struct JDEC {

UINT dctr; /* ÊäÈ뻺³åÇøµÄÈÝÁ¿ */

BYTE* dptr; /* Ö¸Ïòµ±Ç°ÕýÔÚ¶ÁÈ¡µÄÊý¾ÝµÄÖ¸Õë */ BYTE* inbuf; /* Ö¸ÏòÊäÈ뻺³åÇøµÄÖ¸Õë */

BYTE dmsk; /* µ±Ç°ÕýÔÚ¶ÁÈ¡µÄ×Ö½ÚÖеĵ±Ç°µÄÒ»¸öλ */ BYTE scale; /* ͼÏñÊä³ö±ÈÀý */

BYTE msx, msy; /* µ¥Æ¬»úÒ»¸öÄÚ´æ¿éµÄ´óС (¿í¶ÈºÍ¸ß¶È) */ BYTE qtid[3]; /* ÿ¸ö×é¼þµÄÁ¿»¯±íµÄ±àºÅ */

SHORT dcv[3]; /* Previous DC element of each component */ WORD nrst; /* Restart inverval */

UINT width, height; /* ÊäÈëµÄͼƬµÄ´óС£¨ÏñËØ£© */

BYTE* huffbits[2][2];

/*»ô·òÂü±ÈÌØ·Ö²¼±í [yc][dcac] */

WORD* huffcode[2][2]; /* »ô·òÂüÂë×Ö±í [yc][dcac] */ BYTE* huffdata[2][2]; /* »ô·òÂü½âÂëÊý¾Ý±í [yc][dcac] */ LONG* qttbl[4]; /* De-quaitizer tables [id] */ voi ¡­¡­ ´Ë´¦Òþ²Ø£º5900×Ö£¬È«²¿ÎĵµÄÚÈÝÇëÏÂÔØºó²é¿´¡£Ï²»¶¾ÍÏÂÔØ°É ¡­¡­

TjpgDec¼¼ÊõÊֲᣨÖÐÎİ棩 - ͼÎÄ(2).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.jiaowen.net/wendang/403403.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©
Copyright © 2020-2025 ½ÌÎÄÍø °æÈ¨ËùÓÐ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£º78024566 ÓÊÏ䣺78024566@qq.com
ËÕICP±¸19068818ºÅ-2
Top
¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄܳöÏÖÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµ¿Í·þЭÖúÄú´¦Àí¡£
¡Á ³£¼ûÎÊÌ⣨¿Í·þʱ¼ä£ºÖÜÒ»µ½ÖÜÎå 9:30-18:00£©