• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            socketref,再見!高德

            https://github.com/adoggie

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


              1 #include <stdio.h>
              2 
              3 #include "jpeglib.h"
              4 
              5 void
              6 JpegInitDestination(j_compress_ptr cinfo)
              7 {
              8 }
              9 
             10 static boolean
             11 JpegEmptyOutputBuffer(j_compress_ptr cinfo)
             12 {    
             13     return TRUE;
             14 }
             15 
             16 static void
             17 JpegTermDestination(j_compress_ptr cinfo)
             18 {
             19 //    jpegDstDataLen = jpegDstBufferLen - jpegDstManager.free_in_buffer;
             20 }
             21 
             22 /**
             23     Raw Rgb Data converted to Jpeg data
             24 */
             25 bool JpegCompress(int w,int h,const char * rgb_data,int rgb_size,
             26                   char * jpeg_data,int *jpeg_size){
             27     struct jpeg_compress_struct cinfo;
             28     struct jpeg_error_mgr jerr;
             29     struct jpeg_destination_mgr jpegDstManager;
             30     int ret;
             31     unsigned char *srcBuf = new unsigned char[w * 3];
             32     JSAMPROW rowPointer[1];
             33     rowPointer[0= (JSAMPROW)srcBuf;
             34     int left_size;
             35     left_size = *jpeg_size;
             36     cinfo.err = jpeg_std_error(&jerr);
             37     jpeg_create_compress(&cinfo);
             38 
             39     cinfo.image_width = w;
             40     cinfo.image_height = h;
             41     cinfo.input_components = 3;
             42     cinfo.in_color_space = JCS_RGB;
             43     cinfo.raw_data_in = true;
             44     jpeg_set_defaults(&cinfo);
             45     
             46     
             47     cinfo.dest = &jpegDstManager;
             48     
             49     jpegDstManager.next_output_byte = (unsigned char*)jpeg_data;
             50     jpegDstManager.free_in_buffer = left_size;
             51     jpegDstManager.init_destination = JpegInitDestination;
             52     jpegDstManager.empty_output_buffer = JpegEmptyOutputBuffer;
             53     jpegDstManager.term_destination = JpegTermDestination;
             54         
             55     //jpeg_set_quality(&cinfo, 20, TRUE);
             56     
             57     jpeg_start_compress(&cinfo, TRUE);    
             58     for(int y=0;y< h;y++){
             59         rowPointer[0= (unsigned char*)(rgb_data + y*w*3);
             60         ret = jpeg_write_scanlines(&cinfo, rowPointer, 1);
             61     }
             62     jpeg_finish_compress(&cinfo);    
             63     jpeg_destroy_compress(&cinfo);    
             64     *jpeg_size = left_size - jpegDstManager.free_in_buffer;
             65     return true;
             66 }
             67 
             68 void
             69 JpegInitSource(j_decompress_ptr cinfo)
             70 {
             71 
             72 }
             73 
             74 boolean
             75 JpegFillInputBuffer(j_decompress_ptr cinfo)
             76 {
             77     /*
             78     jpegError = true;
             79     jpegSrcManager.bytes_in_buffer = jpegBufferLen;
             80     jpegSrcManager.next_input_byte = (JOCTET *)jpegBufferPtr;    */
             81     return TRUE;
             82 }
             83 
             84 void
             85 JpegSkipInputData(j_decompress_ptr cinfo, long num_bytes)
             86 {/*
             87     if (num_bytes < 0 || (size_t)num_bytes > jpegSrcManager.bytes_in_buffer) {
             88         jpegError = true;
             89         jpegSrcManager.bytes_in_buffer = jpegBufferLen;
             90         jpegSrcManager.next_input_byte = (JOCTET *)jpegBufferPtr;
             91     } else {
             92         jpegSrcManager.next_input_byte += (size_t) num_bytes;
             93         jpegSrcManager.bytes_in_buffer -= (size_t) num_bytes;
             94     }*/
             95 }
             96 
             97 void
             98 JpegTermSource(j_decompress_ptr cinfo)
             99 {
            100     /* No work necessary here. */
            101 }
            102 
            103 bool JpegUnCompress(const char * jpeg_data,int jpeg_size,
            104                     char *rgb_data,int rgb_size,int w,int h){
            105     struct jpeg_decompress_struct cinfo;
            106     struct jpeg_error_mgr jerr;
            107     struct jpeg_source_mgr jpegSrcManager;
            108     int ret;
            109     JSAMPROW rowPointer[1];
            110     cinfo.err = jpeg_std_error(&jerr);
            111     jpeg_create_decompress(&cinfo);
            112 
            113     jpegSrcManager.init_source = JpegInitSource;
            114     jpegSrcManager.fill_input_buffer = JpegFillInputBuffer;
            115     jpegSrcManager.skip_input_data = JpegSkipInputData;
            116     jpegSrcManager.resync_to_restart = jpeg_resync_to_restart;
            117     jpegSrcManager.term_source = JpegTermSource;
            118     jpegSrcManager.next_input_byte = (unsigned char*)jpeg_data;
            119     jpegSrcManager.bytes_in_buffer = jpeg_size;
            120     cinfo.src = &jpegSrcManager;
            121     
            122     jpeg_read_header(&cinfo, TRUE);
            123     cinfo.out_color_space = JCS_RGB;
            124     jpeg_start_decompress(&cinfo);
            125     if( cinfo.output_width != (unsigned int)w && cinfo.output_height != (unsigned int)h){
            126         jpeg_destroy_decompress(&cinfo);
            127         return false;
            128     }
            129     for (int dy = 0; cinfo.output_scanline < cinfo.output_height; dy++) {
            130         rowPointer[0= (unsigned char *)(rgb_data + w*dy*3);
            131         ret = jpeg_read_scanlines(&cinfo, rowPointer, 1);
            132     }
            133     jpeg_finish_decompress(&cinfo);        
            134     jpeg_destroy_decompress(&cinfo);        
            135     return true;
            136 }
            137 
            posted on 2006-03-02 00:47 放屁阿狗 閱讀(8477) 評論(9)  編輯 收藏 引用 所屬分類: 視頻監(jiān)控

            Feedback

            # re: 如何使用libjpeg(rgb2jpeg) 2006-03-08 15:08 shi
            good

              回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-03-10 16:12 binger
            請教:bool JpegUnCompress(const char * jpeg_data,int jpeg_size, char *rgb_data,int rgb_size,int w,int h)函數(shù)中 jpeg_size和rgb_size參數(shù)是什么意思?
            是rgb和jpeg文件的尺寸嗎?rgb文件可以知道,但是jpeg文件在壓縮前是怎么知道大小的呢?  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-03-10 17:09 binger
            作者編譯過這段代碼嗎?我怎么編譯的時候有好多錯誤,請指教  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-03-10 22:41 Guest
            請作者指教:用libjpeg可以去得到DCT變換后或量化變換后的數(shù)據(jù)嗎?如果可以請指教!  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-03-20 13:38 dibotiger
            使用ultravnc-101-src帶的libjpeg.

            把編譯好的Realse LIB和3個必須的頭文件拷入我的工程目錄。

            把你寫的這個文件做以下修改

            #include <stdio.h>
            extern "C"{
            #include "jpeglib.h"
            }

            其他不變,編譯鏈接通過。

            但是在程序運(yùn)行的時候,發(fā)現(xiàn)程序一調(diào)用JpegCompress函數(shù)就自動退出。

            調(diào)試逐步運(yùn)行,發(fā)現(xiàn)在jpeg_create_compress這個地方退出。WHY?

            期望得到你的幫助。  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-05-10 20:01 benjaminwan
            你這個是不是只能壓縮RGB24(即24位色)格式的圖像數(shù)據(jù),不能壓縮RGB565(即16位色)圖像格式?
            想知道如何壓縮RGB565格式的圖像數(shù)據(jù)  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-05-22 14:08 么么
            是啊 我用JpegLib這個庫的時候 jpeg_create_compress以后 總是返回false這是怎么回事兒啊????請教!!
              回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2006-06-24 10:12 zhou533
            請問31行創(chuàng)建的srcBuf的作用什么?  回復(fù)  更多評論
              

            # re: 如何使用libjpeg(rgb2jpeg) 2009-07-25 16:48 liuz
            要自定義一個錯誤對象,如:
            struct my_error_mgr {
            struct jpeg_error_mgr pub; // "public" fields

            jmp_buf setjmp_buffer; // for return to caller

            };

            typedef struct my_error_mgr *my_error_ptr;


            METHODDEF(void) my_error_exit (j_common_ptr cinfo)
            {
            // cinfo->err really points to a my_error_mgr struct, so coerce pointer

            my_error_ptr myerr = (my_error_ptr) cinfo->err;

            // Return control to the setjmp point

            longjmp(myerr->setjmp_buffer, 1);
            }

            然后設(shè)置錯誤對象:
            cinfo.err = jpeg_std_error(&jerr.pub);
            jerr.pub.error_exit = my_error_exit;
            /* Establish the setjmp return context for my_error_exit to use. */
            if (setjmp(jerr.setjmp_buffer)) {
            /* If we get here, the JPEG code has signaled an error.
            * We need to clean up the JPEG object, close the input file, and return.
            */
            jpeg_destroy_decompress(&cinfo);
            fclose(infile);
            return 0;
            }
              回復(fù)  更多評論
              

            久久夜色精品国产亚洲av| 久久九九久精品国产| 精品伊人久久大线蕉色首页| 日韩亚洲国产综合久久久| 久久久精品国产免大香伊| 久久精品国产亚洲AV大全| 久久亚洲国产午夜精品理论片| 国产成人无码精品久久久久免费 | 无码国产69精品久久久久网站| 久久w5ww成w人免费| 久久久久久久亚洲精品| 亚洲va久久久噜噜噜久久天堂| 91精品国产91热久久久久福利 | MM131亚洲国产美女久久| 99久久国产综合精品五月天喷水 | 久久久99精品成人片中文字幕| 亚洲精品视频久久久| 日韩精品久久无码人妻中文字幕| 亚洲天堂久久精品| 久久久精品人妻一区二区三区四| 久久国产影院| 久久福利青草精品资源站免费| 久久久久99这里有精品10| 精品少妇人妻av无码久久| 色综合久久夜色精品国产| 91精品国产91久久久久久蜜臀| 久久久久无码精品国产不卡| 伊人色综合久久天天网| 久久精品国产一区二区三区不卡| 精品午夜久久福利大片| 日韩久久久久久中文人妻| 国产成人精品久久| 伊人久久大香线蕉无码麻豆| 精品久久久久久无码人妻热| 久久久综合九色合综国产| 久久久精品人妻一区二区三区四 | 久久国产成人| 精品无码人妻久久久久久| 久久久精品一区二区三区| 99久久亚洲综合精品成人| 女人香蕉久久**毛片精品|