Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How can I open openexr image on qt widget



  • I wanted to know how I can open images in openexr format in qt, I got to do this with png, gif and etc, which are compatible with pixelmap


  • Lifetime Qt Champion

    Hi
    https://api.kde.org/frameworks/kimageformats/html/index.html
    Supports OpenEXR but as far as i know Qt does not naively support it.



  • @mrjj Thanks for the help, but you have some idea how to install this or use pq my cmake is giving error and decompression in the dependency list here


  • Lifetime Qt Champion

    @Nathan-Miguel
    Hi
    https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source/Details#kimageformats

    If you list the excact errors, im hopefull that someone can guess what is missing.

    You might need to install openEXR first so plugin can find it.



  • @mrjj I used msvs 15, 17 win 64

    0_1544445819960_02f9bf27-618c-4e5c-b4c1-d021640d8d8c-image.png

    The C compiler identification is MSVC 19.16.27024.1
    The CXX compiler identification is MSVC 19.16.27024.1
    Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
    Detecting C compiler ABI info
    Detecting C compiler ABI info - done
    Detecting C compile features
    Detecting C compile features - done
    Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
    Detecting CXX compiler ABI info
    Detecting CXX compiler ABI info - done
    Detecting CXX compile features
    Detecting CXX compile features - done
    Could NOT find ECM (missing: ECM_DIR)

    CMake Error at C:/Program Files/CMake/share/cmake-3.13/Modules/FeatureSummary.cmake:459 (message):
    feature_summary() Error: REQUIRED package(s) are missing, aborting CMake
    run.
    Call Stack (most recent call first):
    CMakeLists.txt:8 (feature_summary)

    Configuring incomplete, errors occurred!
    See also "C:/Git/kimageformats/build/CMakeFiles/CMakeOutput.log".


  • Lifetime Qt Champion

    @Nathan-Miguel said in How can I open openexr image on qt widget:

    Extra CMake Modules., https://projects.kde.org/projects/kdesupport/extra-cmake-modules

    It seems to want these also. But im not sure.
    something like

    git clone git://anongit.kde.org/extra-cmake-modules
    cd extra-cmake-modules
    mkdir build && cd build    
    cmake ..
    make && sudo make install
    

    but hold the horse a moment. Im only guessing so give it
    a few hours in case someone knows exactly if thats correct.

    Update:
    yep, should do it.



  • KDE requires their extra CMake modules. You can install them as any other KDE module

    For a guide on how to compile and use the libraries see https://forum.qt.io/post/377923



  • @mrjj Sorry for the delay, but has some way to do this "make" on windows, because this seems to be compilavel so for linux



  • @VRonin @mrjj It worked out right here but now I'm with error in the qt files

    The C compiler identification is MSVC 19.16.27024.1
    The CXX compiler identification is MSVC 19.16.27024.1
    Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
    Detecting C compiler ABI info
    Detecting C compiler ABI info - done
    Detecting C compile features
    Detecting C compile features - done
    Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
    Detecting CXX compiler ABI info
    Detecting CXX compiler ABI info - done
    Detecting CXX compile features
    Detecting CXX compile features - done

    No qmake Qt5 binary found. Can't check QT_INSTALL_PREFIX
    Looking for GLIBC
    Looking for GLIBC - not found
    Could not set up the appstream test. appstreamcli is missing.
    CMake Error at CMakeLists.txt:21 (find_package):
    Could not find a package configuration file provided by "Qt5Gui" (requested
    version 5.9.0) with any of the following names:

    Qt5GuiConfig.cmake
    qt5gui-config.cmake
    

    Add the installation prefix of "Qt5Gui" to CMAKE_PREFIX_PATH or set
    "Qt5Gui_DIR" to a directory containing one of the above files. If "Qt5Gui"
    provides a separate development package or SDK, be sure it has been
    installed.

    Configuring incomplete, errors occurred!
    See also "C:/Git/kimageformats/build/CMakeFiles/CMakeOutput.log".
    See also "C:/Git/kimageformats/build/CMakeFiles/CMakeError.log".


  • Lifetime Qt Champion

    @Nathan-Miguel I guess you need to use MinGW



  • @jsulm I used mingw but it gave an eros too.

    The C compiler identification is unknown
    The CXX compiler identification is unknown
    CMake Error at CMakeLists.txt:3 (project):
    The CMAKE_C_COMPILER:

    cl
    

    is not a full path and was not found in the PATH.

    To use the NMake generator with Visual C++, cmake must be run from a shell
    that can use the compiler cl from the command line. This environment is
    unable to invoke the cl compiler. To fix this problem, run cmake from the
    Visual Studio Command Prompt (vcvarsall.bat).

    Tell CMake where to find the compiler by setting either the environment
    variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
    the compiler, or to the compiler name if it is in the PATH.

    CMake Error at CMakeLists.txt:3 (project):
    The CMAKE_CXX_COMPILER:

    cl
    

    is not a full path and was not found in the PATH.

    To use the NMake generator with Visual C++, cmake must be run from a shell
    that can use the compiler cl from the command line. This environment is
    unable to invoke the cl compiler. To fix this problem, run cmake from the
    Visual Studio Command Prompt (vcvarsall.bat).

    Tell CMake where to find the compiler by setting either the environment
    variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
    to the compiler, or to the compiler name if it is in the PATH.

    Configuring incomplete, errors occurred!
    See also "C:/Git/kimageformats/build/CMakeFiles/CMakeOutput.log".
    See also "C:/Git/kimageformats/build/CMakeFiles/CMakeError.log".



  • @jsulm @mrjj @VRonin is almost, I just need to find this folder that is highlighted and know how to include openexr libraries

    0_1544455619120_be69ec44-c472-4c01-8856-6506abcb4921-image.png

    Could not set up the appstream test. appstreamcli is missing.
    CMake Warning at CMakeLists.txt:23 (find_package):
    By not providing "FindKF5Archive.cmake" in CMAKE_MODULE_PATH this project
    has asked CMake to find a package configuration file provided by
    "KF5Archive", but CMake did not find one.

    Could not find a package configuration file provided by "KF5Archive" with
    any of the following names:

    KF5ArchiveConfig.cmake
    kf5archive-config.cmake
    

    Add the installation prefix of "KF5Archive" to CMAKE_PREFIX_PATH or set
    "KF5Archive_DIR" to a directory containing one of the above files. If
    "KF5Archive" provides a separate development package or SDK, be sure it has
    been installed.

    Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
    Could NOT find OpenEXR (missing: OpenEXR_ILMIMF_LIBRARY OpenEXR_HALF_LIBRARY OpenEXR_IEX_LIBRARY OpenEXR_IMATH_LIBRARY OpenEXR_ILMTHREAD_LIBRARY OpenEXR_INCLUDE_DIR)
    The following REQUIRED packages have been found:

    -- The following OPTIONAL packages have not been found:

    • KF5Archive
      Required for the QImage plugin for Krita and OpenRaster images
    • PkgConfig
    • OpenEXR, A library for handling OpenEXR high dynamic-range image files, http://www.openexr.com/
      Required for the QImage plugin for OpenEXR images

    Configuring done
    Generating done


  • Lifetime Qt Champion

    Did you get OpenEXR first ?



  • It worked out right here but now I'm with error in the qt files
    No qmake Qt5 binary found. Can't check QT_INSTALL_PREFIX

    You need to run qtenv2.bat as explained in the link I posted

    but has some way to do this "make" on windows

    Once you selected the right generator just call cmake --build . (don't forget the dot at the end) and CMake will automatically call the correct build tool

    Could not find a package configuration file provided by "KF5Archive" with

    weird, KArchive is not listed as a dependency for KImageFormats. In any case it's a Tier1 Module of KDE

    The following OPTIONAL packages have not been found:

    KF5Archive
    

    so it's just optional, cool.

    P.S.
    In my experience CMake GUI messed up my config more than it helped me build projects, I find it easier just doing it via the terminal



  • @SGaist Well I'm finishing compiling the remaining dependencies, but the only thing that gave me error was to install the fade pro python library "https://stefanseefeld.github.io/faber" I performed all the right steps but the system can not find directory or error on line 139


  • Lifetime Qt Champion

    Can you give more details about what you did and what failed ?



  • @SGaist

    CMAKE TERMINAL:

    PS C:\Git\openexr\build> cmake --build .
    [  0%] Built target eLut
    [  1%] Built target toFloat
    [  1%] Built target Half
    [  2%] Built target Half_static
    [  2%] Built target Iex
    [  3%] Built target Iex_static
    [  4%] Building CXX object IlmBase/IexMath/CMakeFiles/IexMath.dir/IexMathFloatExc.cpp.obj
    In file included from C:/Git/openexr/IlmBase/Iex/IexMathExc.h:40:0,
                     from C:/Git/openexr/IlmBase/IexMath/IexMathFloatExc.h:58,
                     from C:\Git\openexr\IlmBase\IexMath\IexMathFloatExc.cpp:43:
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:149:29: error: function 'Iex_2_3::ArgExc::ArgExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ArgExc, BaseExc)    // Invalid arguments to a function call
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:149:29: error: function 'Iex_2_3::ArgExc::ArgExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ArgExc, BaseExc)    // Invalid arguments to a function call
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:149:29: error: function 'Iex_2_3::ArgExc::ArgExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ArgExc, BaseExc)    // Invalid arguments to a function call
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:149:29: error: function 'Iex_2_3::ArgExc::ArgExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ArgExc, BaseExc)    // Invalid arguments to a function call
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::ArgExc::~ArgExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:149:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, ArgExc, BaseExc)    // Invalid arguments to a function call
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:151:29: error: function 'Iex_2_3::LogicExc::LogicExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, LogicExc, BaseExc)  // General error in a program's logic,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:151:29: error: function 'Iex_2_3::LogicExc::LogicExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, LogicExc, BaseExc)  // General error in a program's logic,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:151:29: error: function 'Iex_2_3::LogicExc::LogicExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, LogicExc, BaseExc)  // General error in a program's logic,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:151:29: error: function 'Iex_2_3::LogicExc::LogicExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, LogicExc, BaseExc)  // General error in a program's logic,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::LogicExc::~LogicExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:151:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, LogicExc, BaseExc)  // General error in a program's logic,
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:156:29: error: function 'Iex_2_3::InputExc::InputExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, InputExc, BaseExc)  // Invalid input data, e.g. from a file
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:156:29: error: function 'Iex_2_3::InputExc::InputExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, InputExc, BaseExc)  // Invalid input data, e.g. from a file
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:156:29: error: function 'Iex_2_3::InputExc::InputExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, InputExc, BaseExc)  // Invalid input data, e.g. from a file
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:156:29: error: function 'Iex_2_3::InputExc::InputExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, InputExc, BaseExc)  // Invalid input data, e.g. from a file
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::InputExc::~InputExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:156:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, InputExc, BaseExc)  // Invalid input data, e.g. from a file
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:158:29: error: function 'Iex_2_3::IoExc::IoExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, IoExc, BaseExc)     // Input or output operation failed
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:158:29: error: function 'Iex_2_3::IoExc::IoExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, IoExc, BaseExc)     // Input or output operation failed
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:158:29: error: function 'Iex_2_3::IoExc::IoExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, IoExc, BaseExc)     // Input or output operation failed
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:158:29: error: function 'Iex_2_3::IoExc::IoExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, IoExc, BaseExc)     // Input or output operation failed
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::IoExc::~IoExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:158:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, IoExc, BaseExc)     // Input or output operation failed
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:160:29: error: function 'Iex_2_3::MathExc::MathExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, MathExc, BaseExc)  // Arithmetic exception; more specific
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:160:29: error: function 'Iex_2_3::MathExc::MathExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, MathExc, BaseExc)  // Arithmetic exception; more specific
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:160:29: error: function 'Iex_2_3::MathExc::MathExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, MathExc, BaseExc)  // Arithmetic exception; more specific
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:160:29: error: function 'Iex_2_3::MathExc::MathExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, MathExc, BaseExc)  // Arithmetic exception; more specific
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::MathExc::~MathExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:160:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, MathExc, BaseExc)  // Arithmetic exception; more specific
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:164:29: error: function 'Iex_2_3::ErrnoExc::ErrnoExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ErrnoExc, BaseExc)  // Base class for exceptions corresponding
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:164:29: error: function 'Iex_2_3::ErrnoExc::ErrnoExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ErrnoExc, BaseExc)  // Base class for exceptions corresponding
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:164:29: error: function 'Iex_2_3::ErrnoExc::ErrnoExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ErrnoExc, BaseExc)  // Base class for exceptions corresponding
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:164:29: error: function 'Iex_2_3::ErrnoExc::ErrnoExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, ErrnoExc, BaseExc)  // Base class for exceptions corresponding
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::ErrnoExc::~ErrnoExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:164:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, ErrnoExc, BaseExc)  // Base class for exceptions corresponding
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:169:29: error: function 'Iex_2_3::NoImplExc::NoImplExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NoImplExc, BaseExc) // Missing method exception e.g. from a
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:169:29: error: function 'Iex_2_3::NoImplExc::NoImplExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NoImplExc, BaseExc) // Missing method exception e.g. from a
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:169:29: error: function 'Iex_2_3::NoImplExc::NoImplExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NoImplExc, BaseExc) // Missing method exception e.g. from a
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:169:29: error: function 'Iex_2_3::NoImplExc::NoImplExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NoImplExc, BaseExc) // Missing method exception e.g. from a
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::NoImplExc::~NoImplExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:169:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, NoImplExc, BaseExc) // Missing method exception e.g. from a
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:175:29: error: function 'Iex_2_3::NullExc::NullExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NullExc, BaseExc)   // A pointer is inappropriately null.
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:175:29: error: function 'Iex_2_3::NullExc::NullExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NullExc, BaseExc)   // A pointer is inappropriately null.
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:175:29: error: function 'Iex_2_3::NullExc::NullExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NullExc, BaseExc)   // A pointer is inappropriately null.
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:175:29: error: function 'Iex_2_3::NullExc::NullExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, NullExc, BaseExc)   // A pointer is inappropriately null.
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::NullExc::~NullExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:175:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, NullExc, BaseExc)   // A pointer is inappropriately null.
     ^~~~~~~~~~~~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:177:29: error: function 'Iex_2_3::TypeExc::TypeExc()' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, TypeExc, BaseExc)   // An object is an inappropriate type,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:135:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name()                         throw(): base (0)    {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:177:29: error: function 'Iex_2_3::TypeExc::TypeExc(const char*)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, TypeExc, BaseExc)   // An object is an inappropriate type,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:136:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const char* text)        throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:177:29: error: function 'Iex_2_3::TypeExc::TypeExc(const string&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, TypeExc, BaseExc)   // An object is an inappropriate type,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:137:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (const std::string &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:177:29: error: function 'Iex_2_3::TypeExc::TypeExc(std::stringstream&)' definition is marked dllimport
     DEFINE_EXC_EXP (IEX_EXPORT, TypeExc, BaseExc)   // An object is an inappropriate type,
                                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:138:13: note: in definition of macro 'DEFINE_EXC_EXP'
             exp name (std::stringstream &text) throw(): base (text) {}  \
                 ^~~~
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:139:13: error: function 'Iex_2_3::TypeExc::~TypeExc()' definition is marked dllimport
             exp ~name() throw() { }                                     \
                 ^
    C:/Git/openexr/IlmBase/Iex/IexBaseExc.h:177:1: note: in expansion of macro 'DEFINE_EXC_EXP'
     DEFINE_EXC_EXP (IEX_EXPORT, TypeExc, BaseExc)   // An object is an inappropriate type,
     ^~~~~~~~~~~~~~
    IlmBase\IexMath\CMakeFiles\IexMath.dir\build.make:62: recipe for target 'IlmBase/IexMath/CMakeFiles/IexMath.dir/IexMathFloatExc.cpp.obj' failed
    mingw32-make.exe[2]: *** [IlmBase/IexMath/CMakeFiles/IexMath.dir/IexMathFloatExc.cpp.obj] Error 1
    CMakeFiles\Makefile2:1294: recipe for target 'IlmBase/IexMath/CMakeFiles/IexMath.dir/all' failed
    mingw32-make.exe[1]: *** [IlmBase/IexMath/CMakeFiles/IexMath.dir/all] Error 2
    Makefile:161: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 2
    
    CMAKE GUI 
    
    CMake Warning at CMakeLists.txt:143 (message):
      Viewers are currently out of order.  Building anyway
    
    
    Found OpenGL: opengl32   
    Could NOT find FLTK (missing: FLTK_LIBRARIES FLTK_INCLUDE_DIR) 
    CMake Warning at CMakeLists.txt:147 (message):
      FLTK not found, exrdisplay will not be built
    
    
    ILMBASE_PACKAGE_PREFIX = C:/Program Files (x86)/OpenEXR
    INFO,Skipping Python bindings
    INFO,Skipping OpenEXR Viewers
    Configuring done
    Generating done
    


  • @SGaist I also try to compile without selecting these options python lib and openexr viewer as well as in the image. python was because I could not install the "Faber" and the viewer was because I could not install the fltk tbm

    0_1544561882581_b9d74928-2620-44ed-adbe-646b3994041a-image.png



  • @SGaist If you have a problem with linux on linux, I would like to install linux on linux, because it is horrible to program on windows in C ++ on my opinion


  • Lifetime Qt Champion

    @Nathan-Miguel said in How can I open openexr image on qt widget:

    @SGaist If you have a problem with linux on linux, I would like to install linux on linux, because it is horrible to program on windows in C ++ on my opinion

    Install Linux on Linux ? What do you mean by that ?

    In any case, you don't really need the viewer since you want to use Qt to show the images.



  • @SGaist sorry for my keyboard and brazil, sometimes it fixes the errors alone, but what I wanted to say and if it would be easier to program this in linux and if you have how to compile windows files direct in linux. But continuing, where I can find this "FLTK_GL_LIBRARY", and about python it seems that cmake is using 2.7 and not the 3.7 to install the python boost.

    CMake Warning at CMakeLists.txt: 143 (message):
       Viewers are currently out of order. Building anyway
    
    
    ILMBASE_PACKAGE_PREFIX = C: / Program Files (x86) / OpenEXR
    INFO, Skipping Python bindings
    OPENEXR_PACKAGE_PREFIX =
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please make them or make sure they are set and tested correctly in the CMake files:
    FLTK_GL_LIBRARY
         linked by target "exrdisplay" in directory C: / Git / openexr / OpenEXR_Viewers / exrdisplay
    
    Configuring incomplete, errors occurred!
    See also "C: /Git/openexr/build/CMakeFiles/CMakeOutput.log".
    


  • @SGaist I've been able to compile all but that's missing so I can finish compiling Kimageformat, "https://api.kde.org/frameworks/karchive/html/index.html"

    Could not set up the appstream test. appstreamcli is missing.
    Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)
    Could NOT find LibLZMA (missing: LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
    The following OPTIONAL packages have been found:

    * Qt5Network

    • The following REQUIRED packages have been found:

    * ECM (required version> = 5.53.0), Extra CMake Modules., Https://projects.kde.org/projects/kdesupport/extra-cmake-modules
     * ZLIB, Support for gzip compressed files and data streams, http://www.zlib.net
       Required by the core KDE libraries and some critical kioslaves
     * Qt5Core

    • The following features have been disabled:

    * QCH, API documentation in QCH format (for eg Qt Assistant, Qt Creator & KDevelop)

    • The following OPTIONAL packages have not been found:

    * LibLZMA, Support for xz compressed files and data streams, http://tukaani.org/xz/
       Support for xz compressed files and data streams

    • The following RECOMMENDED packages have not been found:

    * BZip2, Support for BZip2 compressed files and data streams, https://sourceware.org/bzip2/
       Support for BZip2 compressed files and data streams

    Configuring done
    Generating done



  • @SGaist Sorry bother, but now I've been able to install everything, thanks to everyone, but how can I include this in my project





  • @VRonin only have a problem, I just see these files for me and what does not accept other formats of includes other than .h, .lib, .a

    0_1544644496765_a7f24467-ca07-4d98-8be5-32182a76f268-image.png

    0_1544644529928_043c200c-dcdd-4d9e-b2a2-63f0898d01dd-image.png


  • Lifetime Qt Champion

    You don't have to link against them. They are plugins that will be loaded at run time.

    You may have to add a call to QCoreApplication::addLibraryPath for your application to find them.



  • @SGaist there is a problem so, cmake is not wanting to include the openexr library in kimageformat, and this makes my program compatible with psd, krikta and others except openexr

    0_1544722625396_6bd37dd2-d3a2-4fc1-aa59-81b5575e481e-image.png



  • @SGaist I was able to make cmake find them but I still have an error compiling openexr's ".lib"

    0_1544753199859_97a920a1-a53e-4933-893d-8a771b85212f-image.png

    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `K_IStream::read(char*, int)':
    C:/Git/kimageformats/src/imageformats/exr.cpp:61: undefined reference to `Iex_2_3::throwErrnoExc(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `EXRHandler::read(QImage*)':
    C:/Git/kimageformats/src/imageformats/exr.cpp:169: undefined reference to `Imf_2_3::globalThreadCount()'
    C:/Git/kimageformats/src/imageformats/exr.cpp:169: undefined reference to `Imf_2_3::RgbaInputFile::RgbaInputFile(Imf_2_3::IStream&, int)'
    C:/Git/kimageformats/src/imageformats/exr.cpp:170: undefined reference to `Imf_2_3::RgbaInputFile::dataWindow() const'
    C:/Git/kimageformats/src/imageformats/exr.cpp:178: undefined reference to `Imf_2_3::RgbaInputFile::setFrameBuffer(Imf_2_3::Rgba*, unsigned long long, unsigned long long)'
    C:/Git/kimageformats/src/imageformats/exr.cpp:179: undefined reference to `Imf_2_3::RgbaInputFile::readPixels(int, int)'C:/Git/kimageformats/src/imageformats/exr.cpp:169: undefined reference to `Imf_2_3::RgbaInputFile::~RgbaInputFile()'
    C:/Git/kimageformats/src/imageformats/exr.cpp:169: undefined reference to `Imf_2_3::RgbaInputFile::~RgbaInputFile()'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `EXRHandler::canRead(QIODevice*)':
    C:/Git/kimageformats/src/imageformats/exr.cpp:212: undefined reference to `Imf_2_3::isImfMagic(char const*)'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `Iex_2_3::InputExc::InputExc(char const*)':
    C:/PROGRA~1/OpenEXR/include/OpenEXR/IexBaseExc.h:156: undefined reference to `Iex_2_3::BaseExc::BaseExc(char const*)'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `Iex_2_3::InputExc::~InputExc()':
    C:/PROGRA~1/OpenEXR/include/OpenEXR/IexBaseExc.h:156: undefined reference to `Iex_2_3::BaseExc::~BaseExc()'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `K_IStream::K_IStream(QIODevice*, QByteArray const&)':
    C:/Git/kimageformats/src/imageformats/exr.cpp:40: undefined reference to `Imf_2_3::IStream::IStream(char const*)'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj):exr.cpp:(.rdata$_ZTV9K_IStream[_ZTV9K_IStream]+0x20): undefined reference to `Imf_2_3::IStream::isMemoryMapped() const'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj):exr.cpp:(.rdata$_ZTV9K_IStream[_ZTV9K_IStream]+0x30): undefined reference to `Imf_2_3::IStream::readMemoryMapped(int)'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj): In function `K_IStream::~K_IStream()':
    C:/Git/kimageformats/src/imageformats/exr.cpp:36: undefined reference to `Imf_2_3::IStream::~IStream()'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj):exr.cpp:(.rdata$_ZTVN7Iex_2_38InputExcE[_ZTVN7Iex_2_38InputExcE]+0x20): undefined reference to `Iex_2_3::BaseExc::what() const'
    CMakeFiles\kimg_exr.dir/objects.a(exr.cpp.obj):exr.cpp:(.rdata$.refptr._ZN4half8_toFloatE[.refptr._ZN4half8_toFloatE]+0x0): undefined reference to `half::_toFloat'
    collect2.exe: error: ld returned 1 exit status
    mingw32-make.exe[2]: *** [src\imageformats\CMakeFiles\kimg_exr.dir\build.make:107: bin/imageformats/kimg_exr.dll] Error 1
    mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:200: src/imageformats/CMakeFiles/kimg_exr.dir/all] Error 2
    mingw32-make.exe: *** [Makefile:140: all] Error 2
    

  • Lifetime Qt Champion

    Can you check in which OpenEXR library you have these symbols ? It's likely the llmlmf library but better double check.



  • @SGaist strange, because all the libs here are good, until the includes are complete

    0_1544875563064_887a0e51-2f6d-478f-a2f8-f155effb02bf-image.png


  • Lifetime Qt Champion

    I didn't meant you are missing a library, just wondering which one contains the missing symbols and thus if you are linking against it.



  • @SGaist The log says that "moc_predefs.h" is giving the library error to generate kimg_exr.dll, more briefly, but what can I do to correct it, I tried to switch between VS and mingw

    [ 1%] Automatic MOC for target kimg_exr

    AutoMoc subprocess error

    The content generation command for "moc_predefs.h" failed.

    Command

    C:/Qt/Tools/mingw730_64/bin/g++.exe -dM -E -c "C:/Program Files/CMake/share/cmake-3.13/Modules/CMakeCXXCompilerABI.cpp" -IC:/Git/kimageformats/build/src/imageformats -IC:/Git/kimageformats/src/imageformats -IC:/Qt/5.12.0/mingw73_64/include -IC:/Qt/5.12.0/mingw73_64/include/QtGui -IC:/Qt/5.12.0/mingw73_64/include/QtANGLE -IC:/Qt/5.12.0/mingw73_64/include/QtCore -IC:/Qt/5.12.0/mingw73_64/./mkspecs/win32-g++ "-IC:/Program Files/OpenEXR/include/OpenEXR" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_USE_QSTRINGBUILDER -DUNICODE -DWIN32_LEAN_AND_MEAN -DWINVER=0x0600 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D_USE_MATH_DEFINES -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0600 -DWIN32
    

    Output

    src\imageformats\CMakeFiles\kimg_exr_autogen.dir\build.make:56: recipe for target 'src/imageformats/CMakeFiles/kimg_exr_autogen' failed
    mingw32-make.exe[2]: *** [src/imageformats/CMakeFiles/kimg_exr_autogen] Error 1
    CMakeFiles\Makefile2:569: recipe for target 'src/imageformats/CMakeFiles/kimg_exr_autogen.dir/all' failed
    mingw32-make.exe[1]: *** [src/imageformats/CMakeFiles/kimg_exr_autogen.dir/all] Error 2
    Makefile:139: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 2
    

  • Lifetime Qt Champion

    You can't mix and match C++ libraries built with VS and MinGW, you have to always use the same compiler.



  • I tried to build it myself but I must admit I too struggle with getting openexr to link. I will post my progress below anyway to make it more accessible to other people to try and fix this. The commands should create a zip file containing each dependency and a zip file containing the KDE API libraries but I can't get the final link over the line

    The series of commands I used can be replicated to build all the dependencies and the library (as you can see, I built with Qt5.12 on MSVC 2015):

    set cmake_path=C:\Program Files\CMake\bin
    set 7zip_path=C:\Program Files\7-Zip
    set git_path=C:\Program Files\Git\bin
    set qt_path=C:\Qt\5.12\msvc2015_64
    set curl_path=C:\libcurl\bin
    set compiler_path=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
    set comp_platform=amd64
    set use_mingw=false
    set originalWD=%CD%
    set PATH=%cmake_path%;%git_path%;%curl_path%;%7zip_path%;%PATH%
    call "%qt_path%\bin\qtenv2.bat"
    cd %originalWD%
    echo on
    if %use_mingw%==true set PATH=%compiler_path%;%PATH%
    if %use_mingw%==false call "%compiler_path%\vcvarsall.bat" %comp_platform%
    if %use_mingw%==true (set CMAKEGENERATOR="MinGW Makefiles") else (set CMAKEGENERATOR="NMake Makefiles")
    mkdir .\bzip2src && cd .\bzip2src
    curl -k -L https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/bzip2-1.0.5-src.zip --output bzip2.zip
    7z x bzip2.zip
    del /F /Q  bzip2.zip
    cd src\bzip2\1.0.5\bzip2-1.0.5\
    mkdir build && cd build
    echo cmake_minimum_required(VERSION 3.5) >> ..\CMakeLists.txt
    echo project(bzip2 C) >> ..\CMakeLists.txt
    echo set(bzip2_VERSION 1.0.5) >> ..\CMakeLists.txt
    echo set(bzip2_SRCS >> ..\CMakeLists.txt
    echo bzlib.c >> ..\CMakeLists.txt
    echo blocksort.c >> ..\CMakeLists.txt
    echo huffman.c >> ..\CMakeLists.txt
    echo crctable.c >> ..\CMakeLists.txt
    echo compress.c >> ..\CMakeLists.txt
    echo decompress.c >> ..\CMakeLists.txt
    echo randtable.c >> ..\CMakeLists.txt
    echo ) >> ..\CMakeLists.txt
    echo add_library(bzip2 SHARED ${bzip2_SRCS}) >> ..\CMakeLists.txt
    echo install(TARGETS bzip2 >> ..\CMakeLists.txt
    echo EXPORT bzip2 >> ..\CMakeLists.txt
    echo RUNTIME DESTINATION bin COMPONENT library >> ..\CMakeLists.txt
    echo LIBRARY DESTINATION lib COMPONENT library >> ..\CMakeLists.txt
    echo ARCHIVE DESTINATION lib COMPONENT library >> ..\CMakeLists.txt
    echo ) >> ..\CMakeLists.txt
    echo install(FILES bzlib.h >> ..\CMakeLists.txt
    echo DESTINATION include >> ..\CMakeLists.txt
    echo COMPONENT headers >> ..\CMakeLists.txt
    echo ) >> ..\CMakeLists.txt
    cmake -G %CMAKEGENERATOR% -DCMAKE_INSTALL_PREFIX=../../../../../../bzip2 -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\..\..\..\..\
    set PATH=%CD%\bzip2;%PATH%
    7z a -tzip bzip2.zip .\bzip2\*
    mkdir .\liblzma && cd .\liblzma
    curl -k -L https://tukaani.org/xz/xz-5.2.4-windows.zip --output liblzma.zip
    7z x liblzma.zip
    del /F /Q liblzma.zip
    if %use_mingw%==true (ren bin_i686 lib) else (mkdir lib && mkdir bin)
    if %use_mingw%==false curl -k -L https://tukaani.org/xz/xz-5.2.4.tar.gz --output liblzma.tar.gz
    if %use_mingw%==false 7z x liblzma.tar.gz
    if %use_mingw%==false del /F /Q liblzma.tar.gz
    if %use_mingw%==false 7z x liblzma.tar
    if %use_mingw%==false del /F /Q liblzma.tar
    if %use_mingw%==false cd xz-5.2.4\windows\vs2013
    if %comp_platform%==x86 if %use_mingw%==false msbuild xz_win.sln /property:Configuration=Release /property:Platform=Win32 && xcopy /Y /I /K Release\Win32\liblzma_dll\*.dll ..\..\..\bin && xcopy /Y /I /K Release\Win32\liblzma_dll\*.lib ..\..\..\lib
    if %comp_platform%==amd64 if %use_mingw%==false msbuild xz_win.sln /property:Configuration=Release /property:Platform=x64 && xcopy /Y /I /K Release\x64\liblzma_dll\*.dll ..\..\..\bin && xcopy /Y /I /K Release\x64\liblzma_dll\*.lib ..\..\..\lib
    if %use_mingw%==false cd ..\..\..\
    set PATH=%CD%;%PATH%
    cd ..\
    7z a -tzip liblzma.zip .\liblzma\include\
    7z a -tzip liblzma.zip .\liblzma\lib\
    if %use_mingw%==false 7z a -tzip liblzma.zip .\liblzma\bin\
    git clone https://github.com/madler/zlib.git zlibBuild
    cd zlibBuild
    mkdir .\build && cd .\build
    cmake -G %CMAKEGENERATOR% -DCMAKE_INSTALL_PREFIX=../../zlib -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\
    7z a -tzip zlib.zip .\zlib\*
    set PATH=%CD%\zlib;%PATH%
    git clone https://github.com/openexr/openexr.git OpenEXRsrc
    cd OpenEXRsrc
    mkdir .\build && cd .\build
    cmake -G %CMAKEGENERATOR% -DOPENEXR_NAMESPACE_VERSIONING=OFF -DOPENEXR_BUILD_PYTHON_LIBS=OFF -DCMAKE_DEBUG_POSTFIX=d -DOPENEXR_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../OpenEXR -DCMAKE_BUILD_TYPE=DEBUG ../
    cmake --build .
    cmake --build . --target install
    cmake -G %CMAKEGENERATOR% -DOPENEXR_NAMESPACE_VERSIONING=OFF -DOPENEXR_BUILD_PYTHON_LIBS=OFF -DOPENEXR_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../OpenEXR -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\
    7z a -tzip OpenEXR.zip .\OpenEXR\*
    set PATH=%CD%\OpenEXR;%PATH%
    git clone git://anongit.kde.org/extra-cmake-modules ECM
    cd ECM
    mkdir .\build && cd .\build
    cmake -G %CMAKEGENERATOR% -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=../../ECMbuild -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\
    set PATH=%CD%\ECMbuild;%PATH%
    git clone git://anongit.kde.org/karchive.git KArchive
    cd KArchive
    mkdir .\build && cd .\build
    cmake -G %CMAKEGENERATOR% -DBUILD_TESTING=OFF -DCMAKE_DEBUG_POSTFIX=d -DCMAKE_INSTALL_PREFIX=../../KDEAPI -DCMAKE_BUILD_TYPE=DEBUG ../
    cmake --build .
    cmake --build . --target install
    cmake -G %CMAKEGENERATOR% -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=../../KDEAPI -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\
    set PATH=%CD%\KDEAPI;%PATH%
    git clone git://anongit.kde.org/kimageformats.git KImageFormats
    cd KImageFormats
    mkdir .\build && cd .\build
    cmake -G %CMAKEGENERATOR% -DBUILD_TESTING=OFF -DCMAKE_DEBUG_POSTFIX=d -DCMAKE_INSTALL_PREFIX=../../KDEAPI -DCMAKE_BUILD_TYPE=DEBUG ../
    cmake --build .
    cmake --build . --target install
    cmake -G %CMAKEGENERATOR% -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=../../KDEAPI -DCMAKE_BUILD_TYPE=RELEASE ../
    cmake --build .
    cmake --build . --target install
    cd ..\..\
    7z a -tzip KDElib.zip .\KDEAPI\*
    

    You'll need to have installed 7-zip, curl, CMake and git.
    You'll need to change the initial lines to match your system:

    • set cmake_path=C:\Program Files\CMake\bin: path to the CMake executable
    • set 7zip_path=C:\Program Files\7-Zip: path to the 7-zip executable
    • set git_path=C:\Program Files\Git\bin: path to the git executable
    • set qt_path=C:\Qt\5.12\msvc2015_64: path to your qt directory
    • set curl_path=C:\libcurl\bin: path to the curl executable
    • set compiler_path=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC: path to the compiler binary folder
    • set comp_platform=amd64 can be either amd64 or x86 determines if the build is 64 or 32 bit
    • set use_mingw=false set to true if you use MinGW or false if you use MSVC

    One final thing, if you use MinGW you might need to adjust the line if %use_mingw%==true (ren bin_i686 lib) else (mkdir lib && mkdir bin) changing bin_i686 to the name of the folder containing the libraries that match your compiler (there are 3 available)



  • @SGaist @VRonin you save my lifeeeeeee. but Well I chose to use VS because mingw gave object error, but how can I include it in qt now, you can give a clearer explanation because documentation is confusing



  • @Nathan-Miguel said in How can I open openexr image on qt widget:

    but how can I include it in qt

    I imagine you mean Qt Creator. Right click on your project -> add library -> external library -> select the .lib file and the include directory (the d suffix should be detected automatically).



  • @VRonin even the libs was fine, but in question my qt still does not open and I still have some doubts,

    1. Do I need to add the openexr and libs includes?
    2. Can I continue using the QPixelmap label?
    3. In kimageformat did not come any include in .h, do I have to use .desktop or use the openexr includes to open the image?

    This is the function I'm using to open an image

    void MainWindow::on_actionOpen_Image_triggered()
    {
        QString filter = "Imagens (*.bmp *.cur *.gif *icns *.ico *.jpg *.jpeg *.pdm *.pgm *.png *.ppm *.svg *.tga *.tif *.tiff *.wbmp *.webp *.xmb *.xpm) ;; All Files (*.*)";
        QString filename = QFileDialog::getOpenFileName(this, "Open", QDir::homePath(), filter);
        QFile file(filename);
        QImage image(filename);
        if (!image.isNull())
            {
                 QImage image(filename);
                 image = image.scaledToWidth(ui->labelimg->width(), Qt::SmoothTransformation);
                 image = image.scaledToWidth(ui->labelimg->height(), Qt::SmoothTransformation);
                 ui->labelimg->setPixmap(QPixmap::fromImage(image));
            }
        else
            {
                QMessageBox::warning(this, "Error", "Image can not open");
                filename = "";
            }
    
    }
    

  • Lifetime Qt Champion

    Where did you install the plugins ?
    You can also set the QT_DEBUG_PLUGINS environment variable to 1 in the Run part of the Project panel to see what is happening.



  • @SGaist The .desktop files are in the files and programs folder, the libs continued in the folder on I compiled, which was in C: / Git / kimageformat / build, and the dll were for the qt compiler itself, msvc2017-64 in the plugin / image folder

    One more thing, in this directory "C: \ Qt \ 5.12.0 \ msvc2017_64 \ plugins \ imageformats", I realized that the "tga" format, had tbm support here, and gives the same error when I try to open open exr in the app debug "QImage :: scaleWidth: Image is a null image".

    First I used the .dll, .pdb files with this name "kimg_exr", then renamed "qexr", both the dll and the pdb, but it still did not work, nor with the native tga that worked right.

    And if it is useful these are my includes

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDesktopServices>
    #include <QMessageBox>
    #include <QUrl>
    #include <QFile>
    #include <QFileDialog>
    #include <QImage>
    #include <QPixmap>
    #include <QImageIOPlugin>
    #include <QImageIOHandler>
    

    source code: https://github.com/nathanmiguel123/Denoiser-Script


  • Lifetime Qt Champion

    Did you call nmake install at some point ?


Log in to reply