在CMake中使用ImageMagick lib的ImageWand组件 [英] Use ImageWand component of ImageMagick lib with CMake

查看:210
本文介绍了在CMake中使用ImageMagick lib的ImageWand组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在C语言中编程。我想使用ImageMagick库,但某些功能无法解决。

I'm programming in C. I want use ImageMagick library but some fuction can't be resolved.

这是我的cMakeList.txt文件:

This is my cMakeList.txt file:

cmake_minimum_required(VERSION 3.3)
project(WebServer)

set(CMAKE_C_COMPILER "/usr/bin/gcc")

set(SOURCE_FILES io.c server.c lock_fcntl.c sig_handler.c thread_job.c    msg_parser.c)
set(LIB http-parser-master/http_parser.c )

set(CMAKE_USE_PTHREADS_INIT true)
set(CMAKE_USE_PTHREADS_INIT ON)

find_package(Threads REQUIRED)
find_package(ImageMagick COMPONENTS ImageWand)

include_directories(header)
include_directories(http-parser-master)

#include_directories(/usr/local/include/ImageMagick-7/MagickWand)
include_directories(${ImageMagick_INCLUDE_DIRS})

add_executable(server ${SOURCE_FILES} ${LIB})
add_executable(client client.c io.c)
add_executable(main main.c io.c)

target_link_libraries(main ${ImageMagick_LIBRARIES})
target_link_libraries(server Threads::Threads)

,这是主要的源代码.c:

and this is the source main.c:

#include <ImageMagick-7/MagickWand/MagickWand.h>
#include "basic.h"

void convert_image(char *path, float quality_factor, char *out) {

    int width, height;
    MagickWand *n_wand = NULL;

    MagickWandGenesis();

    m_wand = (struct MagickWand *) NewMagickWand();


    MagickReadImage(m_wand,"logo:");

    width = MagickGetImageWidth(m_wand);
    height = MagickGetImageHeight(m_wand);

    if((width /= 2) < 1)width = 1;
    if((height /= 2) < 1)height = 1;

    MagickResizeImage(m_wand,width,height,LanczosFilter,1);

    MagickSetImageCompressionQuality(m_wand,95);

    MagickWriteImage(m_wand,"logo_resize.jpg");

   if(m_wand)m_wand = (struct MagickWand *) DestroyMagickWand(m_wand);

    MagickWandTerminus();
}

MagickWandGenesis() MagickWandTerminus()被解析。
库的安装正确结束。如何解决?

Only MagickWandGenesis() and MagickWandTerminus() are resolved. The installation of the library ends correctly. How to solve?

编辑:

运行时出现错误:

/usr/local/include/ImageMagick-7/MagickWand/MagickWand.h:29:40: fatal     error: MagickCore/magick-config.h: File o directory non esistente
 #  include "MagickCore/magick-config.h"
                                    ^
compilation terminated.
make[3]: *** [CMakeFiles/main.dir/main.c.o] Errore 1
make[2]: *** [CMakeFiles/main.dir/all] Errore 2
make[1]: *** [CMakeFiles/main.dir/rule] Errore 2
make: *** [main] Errore 2

我尝试了此处显示的解决方案,但不起作用:
ImageMagick没有这样的文件或目录

I tried the solution shown here but does not work: ImageMagick No such file or directory

推荐答案

库结构是:

ImageMagick-7
    ├── MagickCore
    │   ├── magick-config.h
    |
    └── MagickWand
        ├── MagickWand.h

MagickWand.h 在MagickCore中包含一些标头。
我修复了将 include_directories($ {ImageMagick_INCLUDE_DIRS})
替换为 include_directories(/ usr / local / include / ImageMagick-7 )
我不知道为什么,但是如果我打印 $ {ImageMagick_INCLUDE_DIRS} ,则不会设置。

MagickWand.h includes some header in MagickCore. I fix replacing include_directories(${ImageMagick_INCLUDE_DIRS}) with include_directories(/usr/local/include/ImageMagick-7). I don't know why but if i print ${ImageMagick_INCLUDE_DIRS} this is not set.

这篇关于在CMake中使用ImageMagick lib的ImageWand组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆