Windows下,C++各种图片格式的转换

C++图片格式的转换

使用静态库来转换,将include和lib文件拷贝至项目中,添加头文件

#include "stdafx.h"
#include "include/ximage.h"

#pragma comment(lib,"lib/cximage.lib")  
#pragma comment(lib,"lib/png.lib")  
#pragma comment(lib,"lib/jasper.lib")  
#pragma comment(lib,"lib/jbig.lib")  
#pragma comment(lib,"lib/Jpeg.lib")  
#pragma comment(lib,"lib/libpsd.lib")  
#pragma comment(lib,"lib/libdcr.lib")  
#pragma comment(lib,"lib/mng.lib")  
#pragma comment(lib,"lib/Tiff.lib")  
#pragma comment(lib,"lib/zlib.lib") 

int PictureFormatTrans(char *fromPath,char *toPath)
{
    int filelen;
    char *fromData;

    FILE *pf = fopen(fromPath,"rb");
    if(pf == NULL)
    {
        printf("%s 不存在",fromPath);
        return -1;
    }
    else
    {
        fseek(pf,0,SEEK_END);
        filelen = ftell(pf);
        fseek(pf,0,SEEK_SET);
    }

    fromData = (char *)malloc(sizeof(char)*filelen);
    fread(fromData,1,filelen,pf);
    fclose(pf);

    CxImage m_Image((BYTE*)fromData,filelen,CXIMAGE_FORMAT_JPG); //转换前的格式,各种格式均可,如果是JPG,填CXIMAGE_FORMAT_JPG
    if(m_Image.IsValid()) //有效
    {
        int size = 0;
        BYTE* buffer = 0;
        int width = m_Image.GetWidth();
        int height = m_Image.GetHeight();
        int xdpi = m_Image.GetXDPI();
        int ydpi = m_Image.GetYDPI();
        m_Image.SetXDPI(180);
        m_Image.SetYDPI(180);
        int newWidth = width*180/xdpi;
        int newHeight = height*180/ydpi;
        m_Image.QIShrink(newWidth,newHeight);
        m_Image.Save(toPath,CXIMAGE_FORMAT_BMP); //转换后的格式,各种格式均可,如果是BMP,填CXIMAGE_FORMAT_BMP
    }
    return 0;
}

如果编译报下列错误
这里写图片描述
解决方法:属性-》配置属性-》C/C++-》代码生成-》运行库,改为多线程(/MT)。

猜你喜欢

转载自blog.csdn.net/sxtdzj/article/details/80886078
今日推荐