• <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++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


              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 放屁阿狗 閱讀(8471) 評論(9)  編輯 收藏 引用 所屬分類: 視頻監控

            Feedback

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

              回復  更多評論
              

            # 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)函數中 jpeg_size和rgb_size參數是什么意思?
            是rgb和jpeg文件的尺寸嗎?rgb文件可以知道,但是jpeg文件在壓縮前是怎么知道大小的呢?  回復  更多評論
              

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

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

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

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

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

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

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

            但是在程序運行的時候,發現程序一調用JpegCompress函數就自動退出。

            調試逐步運行,發現在jpeg_create_compress這個地方退出。WHY?

            期望得到你的幫助。  回復  更多評論
              

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

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

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

            # 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);
            }

            然后設置錯誤對象:
            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;
            }
              回復  更多評論
              

            久久伊人色| 欧美精品乱码99久久蜜桃| 久久精品国产只有精品66| 亚洲av日韩精品久久久久久a| 国产精品无码久久四虎| 国产成人久久精品激情| 日本欧美久久久久免费播放网 | 久久久久国产精品麻豆AR影院 | 久久久青草久久久青草| 99久久精品午夜一区二区| 色综合久久无码五十路人妻| 性欧美丰满熟妇XXXX性久久久 | 久久婷婷五月综合97色| 潮喷大喷水系列无码久久精品| 色综合久久中文字幕无码| 久久国产免费观看精品3| 国产精品一区二区久久| 亚洲国产精品婷婷久久| 久久久精品国产亚洲成人满18免费网站| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品国产亚洲网站| 亚洲精品国精品久久99热| 亚洲午夜久久久| 亚洲国产欧美国产综合久久| 久久A级毛片免费观看| 嫩草影院久久国产精品| 久久久久久一区国产精品| 色天使久久综合网天天| 人妻精品久久久久中文字幕69| 久久这里只精品国产99热| 色综合久久天天综线观看| 久久久精品2019免费观看| 狠狠色丁香婷婷综合久久来来去 | 精品综合久久久久久88小说| 久久99热这里只有精品国产| 色综合色天天久久婷婷基地| 久久精品国产男包| 91久久福利国产成人精品| 亚洲AV日韩精品久久久久久| 精品久久久久中文字| AAA级久久久精品无码片|