首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含在c中的FreeImage

包含在c中的FreeImage
EN

Stack Overflow用户
提问于 2013-05-22 06:56:23
回答 1查看 787关注 0票数 1

有没有办法在我的c测试程序中包含http://freeimage.sourceforge.net/index.html而不用先安装库?由于某些memset,它无法编译。

这是我的C代码。有没有办法让它工作呢?请尝试编译它,并告诉我如何做,如果它的工作?

代码语言:javascript
复制
#define NAZIV_DATOTEKE 50
#include <stdio.h>
#include "FreeImage.h"


void FreeImageErrorHandler(FREE_IMAGE_FORMAT fif, const char *message);
FIBITMAP* GenericLoader(const char* lpszPathName, int flag);

int main(){
    FreeImage_Initialise();
    FIBITMAP *dib, *ptr;
    char ulaz_slika[NAZIV_DATOTEKE] = "bmp_24.bmp";
    char izlaz_slika[NAZIV_DATOTEKE] = "free.bmp";  //podrazumevana vrednost

    dib = GenericLoader(ulaz_slika, 0);
    //slika = FreeImage_Load(FIF_BMP, "bmp_24.bmp", BMP_DEFAULT);
    FreeImage_SetOutputMessage(FreeImageErrorHandler);
    if (dib) {
        printf("Ucitan \"%s\".\n", ulaz_slika);
    }

    FREE_IMAGE_FORMAT fif = FreeImage_GetFileType(ulaz_slika, 0);
    if ((fif != FIF_BMP) && (fif != FIF_ICO) && (fif != FIF_JPEG) && (fif != FIF_PNG) && (fif != FIF_TIFF)){
        printf("Format slike nije podrzan.\n");
        return 1;
    }


    ptr = FreeImage_ConvertTo24Bits(dib);
    FreeImage_SetOutputMessage(FreeImageErrorHandler);
    FreeImage_Unload(dib);
    FreeImage_SetOutputMessage(FreeImageErrorHandler);
    dib = ptr;
    if (dib) {
        printf("Konvertovan u RGB.\n");
    }


    const char *slika = (const char*)FreeImage_GetBits(dib);


    if (FreeImage_Save(fif, dib, izlaz_slika, BMP_DEFAULT)) {
        printf("Snimljen \"%s\".\n", izlaz_slika);
    }


    if (dib) {
        FreeImage_Unload(dib);
    }
    FreeImage_DeInitialise();
    return 0;
}

void FreeImageErrorHandler(FREE_IMAGE_FORMAT fif, const char *message){
    printf("\n*** ");
    if(fif != FIF_UNKNOWN) {
        if (FreeImage_GetFormatFromFIF(fif))
            printf("%s Format\n", FreeImage_GetFormatFromFIF(fif));
    }
    printf(message);
    printf(" ***\n");
}

FIBITMAP* GenericLoader(const char* lpszPathName, int flag) {
    FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
    // check the file signature and deduce its format
    // (the second argument is currently not used by FreeImage)
    fif = FreeImage_GetFileType(lpszPathName, 0);
    if(fif == FIF_UNKNOWN) {
        // no signature ?
        // try to guess the file format from the file extension
    fif = FreeImage_GetFIFFromFilename(lpszPathName);
    }
    // check that the plugin has reading capabilities ...
    if((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) {
        // ok, let's load the file
        FIBITMAP *dib = FreeImage_Load(fif, lpszPathName, flag);
        // unless a bad file format, we are done !
        return dib;
    }
    return NULL;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-22 06:59:25

不你不能。为了编译源代码,链接器需要这个库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16680844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档