GithubHelp home page GithubHelp logo

marius-sucan / quick-picto-viewer Goto Github PK

View Code? Open in Web Editor NEW
58.0 4.0 9.0 161.57 MB

A uniquely crafted image viewer and editor with options to organize files, and maintain large lists of image files for slideshows, dupes detection or other purposes.

Home Page: https://marius.sucan.ro/apps/quick-picto-viewer/

AutoHotkey 94.58% C++ 5.37% C 0.06%
image-viewer slideshow-maker slideshow image-organizer imageeditor imageprocessing image-edi image image-manipulation image-processing

quick-picto-viewer's Introduction

Quick Picto Viewer

To keep the development going, please donate using PayPal.

QPV is an image viewer, editor and a tool to organize image collections based on the GDI+ and FreeImage libraries. It can open about 85 image file formats: .hdr, .raw, .tif, .emf, .wmf, .png, .bmp, .gif, .jpeg and many others.

Download latest version (compiled for Windows, x64 binary)

QPV is able to create image slideshows and cache very large dynamic lists of files. Unlike other applications of this kind, it can load, on my system, a list of 900100 files in under 10 seconds, while XnView Classic or Irfan View need more than 15 minutes. The index of files can be saved as plain-text or as an SQLite database.

With Quick Picto Viewer you can generate file statistics over huge image libraries which can help identify very small images, very low key, or washed out images. You can also identify image duplicates and auto-select files by given criteria.

QPV also has specific tools to index image contents and identify image duplicates, based on similarity. Users can choose from four algorithms to identify the duplicates.

Quick Picto Viewer is also able to play sound files associated with images, automatically or on demand, and even generate slideshows that are in synch with the audio files duration. Supported audio formats: WAV, MP3 and WMA. It can also display image captions / notes for image.

QPV can be used to edit images and/or paint new images. Various tools to this end are available, including blending modes and alpha masking abilities. Please see the features list to learn more in details what QPV can do.

In action

Video showing file management capabilities.

Image painting time-lapse. The video shows the image editing capabilities.

YouTube playlist with more videos.

Quick Picture Viewer - thumbnails list screenshot

Quick Picture Viewer - image view screenshot

QPV runs on Windows 7, Windows 10 and Windows 11, and with some efforts, even on Windows XP - please read the notes at the end.

Source code available on Github.

If you want to run the uncompiled edition, please make sure you download the required DLL files from the Github repository, or the ones included in the ZIP file.

Features

IMAGE EDITING:

  • Options to control viewport brightness, contrast, saturation and RGB color channels balance/intensity.
  • Images can be rotated or mirrored horizontally and vertically in the viewport.
  • Paint brushes: soft edges, cloner, eraser, pinch, bulge, smudge and more:
    • ability to randomize various brush properties when painting
    • textured brushes
    • paint with symmetry
  • Image editing tools:
    • draw arcs, lines and filled shapes
    • parametric line generators [grids, spirals, rays and more]
    • advanced flood fill [color bucket]
    • insert text with advanced customization options
    • paste in place
    • transform selected area
    • various blur filters: gaussian, box blur, radial blur and others
    • rotate, crop, flip, pixelize, add noise, and more.
  • Draw free-form Bézier curved paths or polygonal lines; options to fill with color, textures or gradients.
  • Free-form curved or polygonal selections, elliptical and rectangular selections, rotated at any angle.
  • Vector shapes can be defined with symmetry on X or Y axis.
  • Ability to save/load user created vector paths.
  • 18 blending modes and alpha masking support implemented for various image editing tools.
  • Alpha mask can be user painted or generated: a gradient [linear, box, radial] or a previously drawn vector path.
  • Advanced yet easy to use auto-crop for images.
  • Real-time histogram for any image color channel of the image displayed.
  • Easy to configure viewport grid.
  • Paste texts from clipboard and render them as images. Text and background colors, font style, alignment and size can be personalized.
  • Copy / paste image to/ from clipboard with the alpha channel preserved.
  • Print image. Users can add text, adjust size and position on the page before printing.
  • Batch printing of multiple images.
  • Acquire images from scanners.
  • Resize and crop images preserving the alpha-channel on save.
  • Multiple file formats supported for saving an image.

FILES MANAGEMENT

  • Omnibox and folders tree view - two specialized panels meant to help users navigate through folders, with support for drag and drop amongst them.
  • Quick file actions. Easily move or copy files to user defined folder paths using the number keys: 1 to 6.
  • Ability to automatically group files into sub-folders based on file types or modification date, by months or years.
  • Specialized tool to copy or move files by maintaining their folder(s) structure.
  • Create PDFs or multi-paged TIFFs from selected images. Up to 2048 images allowed.
  • Create customizable contact sheets (thumbnail sheets) of selected images.
  • Extract frames from GIF and WebP animated images, or pages from TIFFs.
  • Multiple list view modes. Display the indexed files as an easy to scroll list with or without image file details, or as thumbnails list.
  • The thumbnails list comes with three predefined aspect ratios: square, wide or tall. Easy to adjust their size: +/- keys.
  • Adaptive multi-threaded thumbnails caching to sizes ranging from 600 pixels to 125 pixels. On very fast PCs, no caching occurs.
  • Files can automatically be selected by strings, or the ones already seen, favourited, and other options.
  • Files list map. A quick view, at a glance, of the files list, highlighting selected files.
  • Sort images by histogram data points, such as the average or median point, resolution, aspect ratio.
    • by their image properties: resolution, aspect ratio, width, height and so on
    • by file properties: size, name, date, et cetera
  • Option to keep a record of seen images and have these skipped during slideshows or erased from the index list. QPV can also generate statistics and charts based on the image viewing habits.
  • Image and folders favourites lists; easy to manage. The list can be very big, up to 950100 images.
  • Multi-rename. Rename multiple files with easy to use patterns. Users can add a prefix and/or suffix to file names, or to count them, or search and replace strings in file names, and more.
  • File statistics panel with categories for: file sizes, file types, modified dates, image size, image histogram data points and much more.
  • Identify image duplicates by user chosen image properties, histogram data points or image content similarity. Multiple algorithms are available to choose from.
  • Index filters: based on text strings or file and image properties.
  • Dedicated panel to automatically identify keywords in file names and folder paths, and option to filter the list based on any identified keyword.
  • Copy files from Explorer and paste in Quick Picto Viewer, or from QPV to Explorer.
  • Copy file names or folder paths as text to clipboard.
  • Quick Picto Viewer has its own slideshow formats to store the list of folders and cache files lists: plain-text and SQLite database.
  • Ability to selectively refresh the cached files list from selected folders.
  • Search and replace in the index, enabling users to correct potentially broken files lists.
  • Very fast loading of cached or not cached lists of files. Tested with 900100 images and it loads in 10 seconds on my system.
  • Support for drag and drop of folders or files on the QPV window.
  • Perform JPEG lossless operations in batch: flip or crop images.
  • Perform actions on image files: resize, rotate [at any degree], crop, change/adjust colors, rename, convert to different file formats, rename, delete, copy or move.
  • Batch processing. You can apply any of the previously mentioned action or operation on multiple files at once.
  • Multiple levels of undo for file actions: rename, move, copy or delete.

GENERAL / USER INTERFACE

  • Support for 85 image file formats, including various Camera RAW formats.
  • Touch screen friendly user interface: swipe gestures and hot-areas to navigate or zoom into images.
  • Adjustable user interface font sizes and colors.
  • Dark mode for the user interface.
  • Customizable keyboard shortcuts and toolbar icons
  • Ambiental textured window background. Automatically generated background based on the currently displayed image.
  • Various modes to adapt images to window.
  • Vertical or horizontal toolbar. Toolbar size adjustable.
  • Slideshows modes: random order, backwards or forwards.
  • Slideshow random modes: with a bias for the first or second half of the files list, or no explicit bias.
  • Option to set background music for the entire slideshow.
  • Audio annotations or text captions for any image file.
  • Quick search box allows users to search through menus and other available options in QPV.
  • Support for animated .WEBP and .GIFs in slideshows - HD GIFs are support as well.
  • Support for multi-paged .WEBP, .TIFFs and .GIF frames. Ability to go through each image frame/page.
  • Private mode. In this mode, images are blurred, and file names and paths are hidden.
  • Multi-monitor support.
  • User interface compatible with Windows Narrator and other screen readers.
  • Fancy welcome screen random-generated images :-).

Why another image viewer/editor

This project is developed out of passion since May 2019 by me, Marius Șucan. It first began as a challenge to make a simple image viewer that can generate slideshows very quickly on over 100 thousand images. What I was using back in those days (XnView and Irfan View) could not do this. After having succeeded this, the project expanded into a complete image viewer and organizer, and gradually, into an image editor as well. The target audience is any occasional user, or the people with huge image libraries, or those who might like advanced image editing features, available through isolated tools, in their image viewer.

As a physically disabled developer, I paid particular attention through-out the development to the needs of people with poor eye-sight and other disabilities. To this end, users with screen readers might notice that the user interface is populated with readable texts. Furthermore, users can activate large UI fonts, adjust the zoom level for texts (Ctrl + -/=) in the viewport, activate dark mode, and right-click on menu items or panel controls to display larger the control's associated texts. The panels' controls can be navigated with the Tab and arrow keys, even the custom slider controls. The users can define the value of a slider via Ctrl+L-Click, where a dialog box prompts the user for the new value. To navigate with the keyboard the main toolbar, press Shift+Tab when the viewport is focused and it will gain keyboard focus.

Key concepts in QPV to know about

THE FILES LIST. It is an index, a list of records pointing to files on the disk.

When users open a folder, a files list index is automatically generated where one can add more files, from other folders, to the index, or remove index entries. Dedicated options and tools are available to manage the index itself.

Given that it is just an index, when you add files, or paste files from the clipboard, the images are inserted only in the files list index, and not into the initially opened folder.

The files list index can be saved and reopened in later sessions. QPV allows users to save the files list in two formats: plain-text and as a SQLite database. For more details, see the Help provided in the Save panel (Ctrl+Shift+S).

THE VIEWPORT. In QPV, unlike in other image viewers, there is a clear distinction between how images are displayed on the screen and the pixel/image data. QPV allows users to alter the viewing conditions without affecting the images themselves. The color adjustments, image rotation and flip options (available in the «Viewport adjustments» panel), are applied in real-time for each image when loaded, before displaying it on screen. There are distinct options and tools in QPV to edit and adjust images or to apply the viewport conditions. QPV will seamlessly apply the viewport viewing conditions onto the image itself when users choose to save the image or when image editing tools are used.

USER/APP CONTEXTS. QPV was developed having in mind keyboard users by providing many keyboard shortcuts or menu accelerators keys. The purpose is to ease the access to different tools.

The user is provided with different keyboard shortcuts, menus, context menus and toolbar icons based on the application context. The main contexts are: image view, files list/thumbs modes, image live editing, and vector shape drawing mode. For each of these contexts, the same keys can do different things, based on the context, or new shortcuts are available, while others are disabled. The same applies to toolbar icons and menus. The toolbar icon tooltips and menu items available always reflect these changes. This contextual mindset is expanded to, and applies to, the ability to customize keyboard shortcuts and the toolbar.

In any context, users can invoke the Quick Menus Search panel with the «;» key or by clicking on the «S» button below the menu items. In this panel, users can search for the currently available options. Most of the menu items are associated with keywords, and synonyms, to facilitate the ease of reach to the available tools.

Other details

Developed by Marius Șucan with special attention for people with disabilities.

I coded the application as an AHK script for AutoHotkey_H v1.1.33. To execute or compile the source code one needs AHK_H.

Quick Picto Viewer can run on Windows 7 and even on XP, but various features might not work. To this end, you may have to copy all the DLL files found in the .\optional-DLL-files-x64\ folder to the same folder where the QPV binary is. If you are running it uncompiled, you must place them in the folder where the AutoHotkey binary resides. The required DLLs for x64 are bundled since version 5.7.5 in the ZIP package and can also be found in the Github repository.

quick-picto-viewer's People

Contributors

marius-sucan avatar telppa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

quick-picto-viewer's Issues

Keyboard shortcut

in the latest version, mouse wheel scroll is bound to zoom level; however, in the help-keyboard-shortcuts.txt, mouse wheel scroll is bound to scroll through images (previous and next).

Questions:
Is there any way to edit the keyboard shortcut in the current version or change the function of the mouse wheel scroll back to scroll images in a folder?

CreatePointsF() should take two types of inPoints.

The description of CreatePointsF() says that inPoints supports two types (string and array) of parameters.

However, it seems that only string are actually supported.

I hope it supports that
If inPoints is arr, like inPoints := "[[x1,y1], [x2,y2], [x3,y3], [x4,y4]]"

feature request

affinity photo like lighting tool

you have a spot and you put a bright light onto the picture adjust opacity

or you have a cone and is able to mve it around the picture to make a light beam

Deleting images: options are not applied

DESCRIPTION;
When deleting an image (pressing "DEL") a dialog box pops up, asking for conformation to delete the image. Within this dialog box a drop down menu is offered to determine the further behaviour when deleting more images.
The options are:

  • "Always prompt for delete"
  • "No longer prompt before file deletion in this session"
  • "Never prompt before file delete"

"Always prompt before delete" is the default value on first deletion.

1.) I want to delete an image pressing "DEL"
2.) dialog box pops up - with "Always prompt before delete" selected
3) I change to ""No longer prompt before file deletion in this session" within dropdown
4.) Button "Delete" is pressed
5.) The first image is deleted
6.) Deletion of second image, pressing "DEL"
7.) dialog box pops up AGAIN - with "Always prompt before delete" selected

EXPECTED BEHAVIOUR:

as step 7.) I would expect, that the image is deleted immediately, according configuration in step 3.)

QPV Version 5.0.1

Show next image after deletion/moving of previous one

Sighting huge amounts of images (I had to review thousands of pictures taken by a wildlife camera for images with animals in it) the following functionality would be REALLY helpful:

Having an image on screen, deleting it, PictoViewer should delete the image AND show up the next image. This could/should be offered as an option ("Proceed to next image after deletion?")

Same feature would be nice for moving images: after moving an image the next image should show up (without additional user input)

In context of a simple review process it would be very helpful to have "one-keypress" actions:

  • Keypress: move image to a (predefined) location and show up next image
  • Another keypress: move image to another (predefined) location and show up next image

The predefined locations might be a directory, recycle bin or "nirvana" (immediately delte the image without recycle bin)

add CreateCompatibleBitmap()

Gdip_CreateCompatibleBitmap(hdc, w, h) {
  return DllCall("gdi32\CreateCompatibleBitmap", "UPtr", hdc, "Int", w, "Int", h)
}

3 minor issues in gdip_all.ahk

  1. Gdip_AddPathPie() should be placed near Gdip_AddPathPieC().

  2. Gdip_AddPathToPath() should be renamed to Gdip_AddPathPath(), or for compatibility reasons, keep Gdip_AddPathToPath() unchanged but add Gdip_AddPathPath().

  3. Gdip_GaussianBlur() always returns -2. Because pEffect and zBitmap do not exist.

may error of `If legacy `

may error

            If FileRexists(imgPath)
            {
                currentFileIndex := detectFileID(imgPath)
                If (allowRecordHistory=1)
                    IniWrite, % imgPath, % mainSettingsFile, General, LastOpenedImg

                IDshowImage(currentFileIndex)
                ;  VVVVVVVVVVVVVVVVVVVV at line 588110
            } Else If OutFileName != ""
            {
                FriendlyName := FileExist(imgPath) ? "malformed" : "inexistent"
                msgBoxWrapper(appTitle ": ERROR", "Error opening file: " OutFileName ". It seems to be " FriendlyName " .`n`nAnother file from the folder will be displayed now. Files indexed: " groupDigits(maxFilesIndex) ".", 0, 0, "error")
                RandomPicture()
            }

The file is too big, github won't let me copy the link...
at quick-picto-viewer.ahk , line 588110

OutFileName := ""
If OutFileName != "" ; is mean caseB
{
    MsgBox, % "OutFileName True" ;<--
} else {
    MsgBox, % "OutFileName False"
}

caseA := ""
If (caseA != "") ; not space
{
    MsgBox, % "caseA True"
} else {
    MsgBox, % "caseA False" ;<--
}

caseB := ""
If (caseB != """") ; not equal one "
{
    MsgBox, % "caseB True" ;<--
} else {
    MsgBox, % "caseB False"
}

ahk v1 doc If (Expression)
if FoundColor != Blue is if (FoundColor != "Blue")

In this file, you only have this line that uses traditional IF legacy, not if () or its variations, so I think this may be a potential bug.

other

you can add this at file top, not only in comment,
I think this will let lower versions ahk to have better startup reminders.

#Requires AutoHotkey v1.1.33.10+

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.