Solved Image plugin
-
@samdol
No it means that Creator, the Qt IDE / Editor cannot be build as a static
Qt application as it really needs to use dynamic loading.You can however create a new Image Plugin and static link with your application.
But you cannot mix statically compiled Qt App and then use plugins dynamically.So you cannot have static Qt app and dynamic loading plugins.
Meaning your STATIC linked App cannot at runtime load extra plugins.
BUt you are free to link new ones in and that way support new formats.Can I ask what image format you want to add?
Also if dynamic loading is important, why use static linking ?
-
@samdol
I think You did read this out of context, see:There are at least two reasons for not building static versions of the GUI tools. First, releasing a new version of an application is typically a task that you automate using a script and there is no need for GUI tools at this stage. Second, it is probably impossible to build a static version of Qt Creator because of the lack of support for plugins in a static environment.
This paragraph talks about QtCreator and it's plugins. QtCreator uses multiple "plugins", see QtCreator -> About Plugins page and I do suspect that this do refer to some of them (Device support ???).
As I said before QImageIOPlugin do support static linkage. Case in point iOS. Deploying Qt app on iOS is statically linked and it do support images.
PS. @mrjj replied while I was typing.
-
@mrjj
Thank you mrjj and LuGRU,
It seems the static liking to Plugin is the way to go. Dynamic loading is not important.
For now, I would like to support RAF CRW image formats.
And enventually I need to support pcx, pnm, psd, rgb, eps and NEF formats. -
@samdol
Hi
PSD itself is pretty hardcore. Maybe this can provide starting point
https://github.com/Code-ReaQtor/libqpsd -
@mrjj
Do I have to use plugin to show raw format image file? -
@samdol
Hi do you mean a raw image format like in cameras or just raw as in no header etc?
http://stackoverflow.com/questions/18637721/how-to-display-a-raw-image-file-in-a-qt-gui -
This post is deleted! -
@mrjj
I mean the image format like in cameras, such as CRW, NEF,... -
@samdol said in Image plugin:
CRW
Nope, never saw such plugin. For some camera vendors you have to use the SDK to read it.
http://amin-ahmadi.com/2016/06/09/how-to-handle-canon-eos-raw-images-in-qt-c/Alternatively, you can use a lib
http://www.libraw.org/
and use to convert to format that you can
load or embed into Qt app so it can load native. -
@mrjj
Thank you for the link.
Is the libraw OK to be used on commercial project?
Do I have to buy the license to use in commercial project? -
See the licensing options for libraw here. If you adhere to the terms of one of these licenses you can probably use it in a commercial project.
-
From the link, it seems we need to know
width, height ,QImage::Format about the raw image file before read it.
Could we know those information before read it? -
@samdol said in Image plugin:
Could we know those information before read it?
Not really. That is why raw means many things.
One can guess about it if knowing color format/depth and the filesize but
ultimately it could be anything.For Cameras the raw format means uncompressed. Each vendor might save raw differently and hence
its not easy to "just" read raw files. -
@mrjj
when tried the code in the link with some raw files (NiKON NEF, ..) I could only see unrecognizable dots on the screen. Is it because I did not put the right w, h and format? -
@samdol
Yes if you specify wrong parameters for the format it will look distorted. -
@mrjj
I saw some image Viewer shows raw image file. I wonder how it could read raw image. Because in order to read it correctly, we need to know the w, h, format in advance and there is no way to know w,h, format. -
Well most of the viewers use a library and hence knows vendor raw format and can guess
at format otherwise. Many raw formats do have a header to give more info.
So for camera raw means uncompressed and non filtered and not so much raw block of image data as it
means in other contexts.