handmade.network » Forums » Work-in-Progress » Working on a image viewer
Finalspace
106 posts / 1 project

I am finalspace and do programming since more than 25 years, started on C64 and got serious with borland delphi. Nowadays i use C/C++ only.

#15761 Working on a image viewer
5 days, 13 hours ago Edited by Finalspace on July 11, 2018, 8:16 a.m.

I am in the process of writing a image viewer, to build a replacement for the extremely slow built-in windows-10 photo viewer shit thing and also to fill the gap of a good image viewer here on this network.

As it current state, its already working and i have the main functionality done: Loading images and display them.
Also images are multi-threaded preloaded, so you can fast browse through them.

As i dont want have time to write dozens of image decoders, i am relying on STB_image to do this for me and its doing a great job so far.

The rendering is based on OpenGL 3.3 Core and uses several image filter modes you can choose from (No filter, Bilinear, Bicubic, Lanczos).

For most images it works great, but for images which have thin lines, like grid-like images - it barely can display the lines.
When i compare my image output with the output from the windows-7 image viewer, my viewer seems to be really bad at displaying images :-( They can render that thin lines images absolutly fine, so they must do something which i dont to produce good looking images on the screen.

I tried to compensate for that by adding several GLSL filters, but even the Lanczos one does not solve that problem at all.
Normally such problems can be fixed using mip-mapping, but mip-maps are not supported for GL_TEXTURE_RECTANGLE - as i want to support non-power of images too.

So what is missing to finish it?

- Obvisously a good way to down/up-scale images to produce the best output quality on the screen -> At least identical to the windows-7 image viewer
- Drag & drop support, so you dont need to pass the path by the command line
- Minimalistic icons to browse images using the mouse as well (At the moment i only support keyboard controls)
- Optional in/out effect
- Find a proper name for that
- Ship it

I would love to show you guys the result, but i am at the office right now and all cloud/image upload services are blocked unfortunatly. But i will upload it as soon as i got home.

Stay tuned.
mmozeiko
Mārtiņš Možeiko
1712 posts / 1 project
#15762 Working on a image viewer
5 days, 11 hours ago Edited by Mārtiņš Možeiko on July 11, 2018, 8:47 a.m.

Check out imv. This is my go-to image viewer on Windows for many years. Super fast, super small - on exe, if compiled using only GDI+ backend, then it is less that 200K, including MSVC C runtime.
Finalspace
106 posts / 1 project

I am finalspace and do programming since more than 25 years, started on C64 and got serious with borland delphi. Nowadays i use C/C++ only.

#15764 Working on a image viewer
5 days, 9 hours ago

mmozeiko
Check out imv. This is my go-to image viewer on Windows for many years. Super fast, super small - on exe, if compiled using only GDI+ backend, then it is less that 200K, including MSVC C runtime.


I know there are plenty ones out there, but as usual i want to write it myself. So i am not in search for a replacement, but thanks for the hint.
mmozeiko
Mārtiņš Možeiko
1712 posts / 1 project
#15767 Working on a image viewer
5 days, 2 hours ago

Sure, I'm not saying you should use it. I'm just saying to check its features. To get users to use your viewer it must support some good features. And, for example, to get me to use it, it must work as good as imv.
[email protected]
Ben Visness
14 posts

HMN technical staff, Handmade Math contributor, web developer, etc.

#15770 Working on a image viewer
5 days, 1 hour ago

This may be a bit of a tangent, but you may want to consider different downscaling algorithms. In particular, there are "perceptual" algorithms designed to preserve the apparent features of an image even at a smaller scale.

My friend who has done a bunch of image downscaling research recommends this one as a starting point: https://graphics.ethz.ch/~cengizo/imageDownscaling.htm