⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ijl使用说明.txt

📁 vc环境下的利用IJL压缩库进行BMP->JPG的压缩转化
💻 TXT
字号:
#include "ijl.h"

//--------------自己写的压缩函数,参数分别是:[输出参数]压缩后的缓冲区、大小,[输入]bmp宽、高,bmp缓冲区,图像位(一般写 3),压缩质量1-99。
BOOL EncodeJpegUseIJL(char *dstfile,int *len, int width, int height, char* srcdata, int imageChannels, int quality)
{
    BOOL res = FALSE;
    JPEG_CORE_PROPERTIES image;
    IJLERR err;
    ZeroMemory( &image, sizeof( JPEG_CORE_PROPERTIES ) );
    IJLIOTYPE iotype;
    
    try
    {
        if( ijlInit( &image ) != IJL_OK )
        {
            OutputDebugString( "Can't initialize Intel(R) JPEG library" );
            return FALSE;
        }
        image.DIBWidth  = width;
        image.DIBHeight = height;
        image.DIBBytes  = (unsigned char*)srcdata;
        if (!len || *len == 0)
        {
            image.JPGFile = dstfile;
            iotype = IJL_JFILE_WRITEWHOLEIMAGE;
        }
        else
        {
            image.JPGBytes    = (unsigned char*)dstfile;
            image.JPGSizeBytes = *len;
            iotype = IJL_JBUFF_WRITEWHOLEIMAGE;
        }
        image.JPGWidth  = width;
        image.JPGHeight = abs(height);
        image.jquality = quality;
        switch(imageChannels)
        {
        case 1:
            image.DIBColor       = IJL_G;
            image.DIBChannels    = 1;
            image.DIBPadBytes    = IJL_DIB_PAD_BYTES(image.DIBWidth,1);
            image.JPGColor       = IJL_G;
            image.JPGChannels    = 1;
            image.JPGSubsampling = IJL_NONE;
            break;
        case 3:
            image.DIBColor       = IJL_BGR;
            image.DIBChannels    = 3;
            image.DIBPadBytes    = IJL_DIB_PAD_BYTES(image.DIBWidth,3);
            image.JPGColor       = IJL_YCBCR;
            image.JPGChannels    = 3;
            image.JPGSubsampling = IJL_411;
            break;            
        case 4:
            image.DIBColor       = IJL_RGBA_FPX;
            image.DIBChannels    = 4;
            image.DIBPadBytes    = IJL_DIB_PAD_BYTES(image.DIBWidth,4);
            image.JPGColor       = IJL_YCBCRA_FPX;
            image.JPGChannels    = 4;
            image.JPGSubsampling = IJL_4114;            
            break;

        default:
            break;
        }

        if( (err = ijlWrite( &image, iotype )) != IJL_OK )
        {
            OutputDebugString( "Can't write image(%d)");
        }
        if (len)
            *len = image.JPGSizeBytes;
        if( ijlFree( &image ) != IJL_OK )
        {
            OutputDebugString( "Can't free Intel(R) JPEG library" );
        }
        res = TRUE;
    }
    catch (...)
    {
        OutputDebugString( "EncodeJpegUseIJL unknown error" );
    }
    return res;
}

调用示例
if(EncodeJpegUseIJL((char*)bEncodeData,&lSize,b.bmiHeader.biWidth,b.bmiHeader.biHeight*(-1),(char*)bData,3,80))
			{
				//压缩成功了
			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -