sylikc / jpegview

Fork of JPEGView by David Kleiner - fast and highly configurable viewer/editor for JPEG, BMP, PNG, WEBP, TGA, GIF and TIFF images with a minimal GUI. Basic on-the-fly image processing is provided - allowing adjusting typical parameters as sharpness, color balance, rotation, perspective, contrast and local under-/overexposure.
Other
2.14k stars 127 forks source link

Is it possible for other software to render images using jpegview? #201

Open DeepTulip opened 1 year ago

DeepTulip commented 1 year ago

jpegview is the best performing and most supported format image viewer I've come across, and can open jxl/avif images perfectly. But when I want to display these images in a GUI created by a scripting language, I can't use the power of jpegview. Is it possible to compile a DLL version that uses jpegview.dll to render the images? For example, the script provides the window-hwnd/img-path and jpegview renders the images in the window. I can find libraries to modify images, such as ffmpeg,libvips, but I can't find a library that can render images professionally.

sylikc commented 1 year ago

While in theory this might be possible, either to write an API and have JPEGView be embedded (complicated) or to use several of the supported Interprocess Communication methods. There's no plans for this at this time though.

IPC might be easier to implement, but it's not a planned feature. I haven't looked into exactly which IPC is the easiest to implement either, since there's several ways...

DeepTulip commented 1 year ago

Thanks for the reply.

sylikc commented 1 year ago

I was just thinking... if JPEGView starts up with borderless, I wonder if you could just attach controls to it. Is your project public? It's possible someone with free time could experiment

DeepTulip commented 1 year ago

I don't think the "with borderless" mode is a good way to go, as the constant loading process can be a disaster if images are loaded frequently/heavily. If JPEGView can't be used as a DLL library, then I would like it to be used as a background service. When I need it to load an image, it creates a window that acts as a child of my window, just like those wallpaper programs that embed wallpaper windows into desktop windows. Of course I would still very much like to call JPEGView as a DLL to load an image and output an image control handle. I don't have a project for this, I just use the AutoHotkey scripting language to quickly load some images when needed, like a preview, or to generate image related menus.