Giter Site home page Giter Site logo

ruben2776 / picview Goto Github PK

View Code? Open in Web Editor NEW
939.0 28.0 63.0 47.27 MB

Fast, free and customizable image viewer for Windows 10 and 11.

Home Page: https://picview.org

License: Other

C# 100.00%
image-viewer wpf convert-images picture-viewer image-gallery desktop-app webp csharp windows dotnet

picview's Introduction

PicView Logo

PicView is a fast, free and fully customizable image viewer for Windows 10 and 11. It supports a vast range of image file types, including WEBP, GIF, SVG, PNG, JXL, HEIC, PSD and many others.

Additional features includes viewing EXIF metadata, image compression, batch resizing, viewing images within archives and comic books, image effects, image galleries, and more.

Downloads shield GPL v3 License Windows OS

Downloads

Latest releases at https://picview.org/download

Mirrors

FossHub
MajorGeeks
SourceForge
uptodown

Winget:

cmd $> winget install picview

Chocolatey:

cmd $> choco install picview

Scoop:

cmd $> scoop bucket add extras
cmd $> scoop install extras/picview

Features and screenshots

configure-ui02 - Copy (2)

Switch between a dark and a light theme and toggle between hiding the UI

UI-Dark-Theme-Magenta

UI overview with bottom gallery

Scroll Image

Press X to toggle the scroll function. Click the mousewheel for auto scroll.

Crop Image

Quickly crop image by pressing C. Hold Shift for square selection.

Image Info Window

Lossleslly compress current image by pressing the Optimize Image button.

Click on the stars to save EXIF image rating.

Rename or move files by editing the text box values.

Resize image:

Edit the Width and Height boxes to rezise image.

Use % to resize it by percentage.

EXIF:

Click the expander button to view GPS coordinates which links to Google or BING maps, including advanced camera info, image info, authors, copyright etc.

Image Gallery

Press G to open or close the image gallery

Navigate the gallery with the arrow keys or W,A,S,D and load the selected image with Enter or the E key. The bottom gallery can be turned on or off

Image filters

Use the slider to change the intensity of the effect

Save it locally, set is as wallpaper/lock-screen image, or copy it to clip-holder with the effect applied.

Batch Resizing

Convert/Optimize all your pictures

All files from the Source folder will be selected for processing and will be sent to Output folder. The default name for the output folder will be Processed Pictures.

If the Output folder is the same as the Source folder, or left blank, the files will be overwrittten.

The Convert to dropdown option allows you to convert all the files to a popular format.

The Compression dropdown option allows you to compress the files, either without losing quality or sacrifing some quality for greater reduced file size.

The Quality dropdown option allows you to change quality of supported file types. The higher the Quality setting, the more detail is preserved in the image, but the larger the file size.

The Resize dropdown option allows you to resize the picture by height, width and percentage while keeping the aspect ratio of the image.


Other features

If you have 7-Zip or WinRAR installed, you can view images inside archives, such as .zip, .rar, etc, and comic book archives (.cbr, .cb7, .cbt, .cbz, .cba).

  • Quick startup time and built-in preloader to instantly view next image
  • For images with a transparent background, the background can be changed to a checkerboard background, a dark background or a white background by pressing B.
  • Interface can be toggled to just show the image by pressing Alt + Z.
  • Image EXIF rating
  • Preview between 27 different image filters that will be applied when copying image or setting it as wallpaper/lockscreen image or saving file locally
  • Image Galleries
  • Sort files by: name, file size, date created, last accessed, latest edit, file extension and randomized
  • hover buttons can be toggled on/off in the settings window.
  • Basic editing: rotate, flip, crop, resize, change file type
  • Stay on top of other windows
  • Search subdirectories
  • Drag & drop/paste from clipholder support for files, folders, URLs and archives
  • Scroll function (built with manga/comics in mind)
  • Open file in external application, show it in folder or view file properties
  • Color picker


Rename or move files in the titlebar by pressing F2 or right clicking it.

File support

.jpg .jpeg .jpe .png .bmp .tif .tiff .gif .ico .jfif .webp .svg .svgz
.psd .psb .xcf .jxl .heic .heif .jp2 .hdr .tga .dds
.3fr .arw .cr2 .cr3 .crw .dcr .dng .erf .kdc .mdc .mef .mos .mrw .nef .nrw .orf .pef .raf .raw .rw2 .srf .x3f *
.pgm .hdr .cut .exr .dib .emf .wmf .wpg .pcx .xbm .xpm .wbmp *

* RAW camera formats may be slower to load

Default Shortcuts

* Shortcuts can be changed by opening the About window, and scrolling down

Shortcut Explanation
Esc Close window or current open menu
Ctrl + Q Exit the application
F1 Open the about window
F2 Rename or move the current file
F3 Open and select current file in Explorer
F4 Open the settings window
F5 Start slideshow
F6 Open the effects window
F7 Reset Zoom
F9 Open the batch resize window
F11 Toggle fullscreen
F12 Toggle viewing fullscreen gallery
Alt + Enter Toggle fullscreen
C Crop Image
Ctrl + C Copy image or copy cropped image
Ctrl + V Paste from clipholder, URL, File, File Path or Image
Ctrl + X Cut image file into clipboard
O, Ctrl + O Open file picker dialog
Ctrl + S Save as file
B Toggle background color
X Toggle scrolling the image
F Flip the image
J Open the image resize function
Del Send current file to the recycle bin
Shift + Del Permanently delete current file
I Show the image info window
Ctrl + I Show file properties
Ctrl + Alt + I Open the image resize function
Ctrl + P Print the image
R Reset zoom
Ctrl + R Reload
L Toggle looping
E Open with another application (opens highlighted image if in gallery view)
T Toggle if the applications should stay above other windows
N Open the batch resize window
Ctrl + N Open new window
G Toggles the gallery view
Space Centers window on the current screen (if gallery is open, it will scroll to the center of the highlighted image)
1 Turns on the Auto fit window and sets Fill image off
2 Turns on the Auto fit window and sets Fill image on
3 Turns off the Auto fit window and sets Fill image off
4 Turns off the Auto fit window and sets Fill image on
Home Scrolls to the top, when scrolling is enabled
End Scrolls to the bottom, when scrolling is enabled
Enter Opens highlighted image if in gallery view
A Navigate to previous image
Left Navigate to previous image
Ctrl + A Navigate to first image
Ctrl + Left Navigate to first image
D Navigate to next image
Right Navigate to next image
Ctrl + D Navigate to last image
Ctrl + Right Navigate to first image
Ctrl + Shift + Right Navigate to next folder
Ctrl + Shift + Left Navigate to previous folder
Ctrl + Shift + D Navigate to next folder
Ctrl + Shift + A Navigate to previous folder
Up ⇔ W Rotates the image up (clockwise)
Up ⇔ W Scrolls up when scrolling is enabled
PageUp Scrolls up when scrolling is enabled
Down ⇔ S Rotates image down (counterclockwise)
Down ⇔ S Scrolls down when scrolling is enabled
PageDown Scrolls down when scrolling is enabled
+ Zooms in at cursor position
- Zooms out at cursor position
Double click Reset zoom
Mouse Browserback Go to the previous entry in the file history
Mouse Browserforward Go to the next entry in the file history
Scrollwheel* Navigates back or forth
Ctrl + Scrollwheel Zoom in or out
Alt + Z Show or hide UI

* Scrollwheel behavior can be changed in settings

You can also view and change shortcuts by opening the About window F1

Contributions

Visual Studio 2022 .Net Codacy Badge

Building:
Open and run the solution in Visual Studio or Rider. If you're not using x64 hardware, make sure to change the platform target to your CPU architecture in the project properties, as well as changing the the Magick.NET Nuget packages to match.

Pull requests are welcome. Check current issues and assign yourself or create your own issue.

Improvements to the current code or bug fixes are also welcome!

Translators/Languages

Chinese by Crystal-RainSlide, wcxu21
Spanish by lk.KEVIN (needs updates)
Korean by VenusGirl
German by Brotbox (needs updates)
Polish by YourSenseiCreeper
French by Sylvain LOUIS
Italian by franpoli
Russian by andude10
Romanian by M. Gabriel Lup
English and Danish by me

Looking for translators! If you want to help translate another language or update/improve a current one and be listed here, please take a look at #13

Donate

If you wish to thank me for my work, please

ko-fi

picview's People

Contributors

a224515a avatar andude10 avatar baskerwild avatar brotbox avatar crystal-rainslide avatar dan0v avatar dependabot[bot] avatar franpoli avatar lk-kevin avatar nopeless avatar ruben2776 avatar venusgirl avatar wcxu21 avatar yoursenseicreeper 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

picview's Issues

Panning acts weird when zoomed.

After i zooming a bit and trying to pan with the mouse, it shifts 50-100 pixels to a random direction (i guess?) then starts panning. It happens pretty much every time.

Convert code to MVVM

Currently this project is not having a design pattern, since I am mostly self taught. and never expected any help.

I'm planning on converting this project to Avalonia, to bring Mac and possibly Linux support, and having an MVVM pattern is prerequisite for porting the code.

Any help or pull requests to get this started would be greatly appreciated.

Grouping and tagging - Feature Request

The option to automatically group images with people faces and other objects like animals, buildings and cars but not limited. The main thing is grouping by faces and allowing to tag similar faces with names. Then based upon previous data Automatically group new images with similar faces.

Alternative: Picasa 3d by Google (deprecated), karita (early stages). Gallery Go(Android only)

Unable to render TGA image

Describe the bug
The application display "Unable to render image" when I drop a tga image on the interface.
Before dropping, the preview is showned but is flipped vertically.

I noted that TGA extension is not present in the open file dialog

Additional context
Tests were done with PIcView self-contained and Framework-dependent version 0.9.9.8
I tried with 32 and 8 bits uncompressed images.

Images not centered

Hi, I used PicView for the first time yesterday and I've noticed that images are not displayed centered.

Normally the image is placed on the left side of the screen, at a certain distance from the top:

PicView 1

In some cases, the image is placed on the top:

PicView 2

Occasionally, the image is cut out:

PicView 3

My preference would be for the images to be displayed both horizontally and vertically centered, but it would be nice if other options were available for users. For example, it might be useful to display the images justified to the top left, as this way the first pixel of each image would be exactly at the same position.

I hope you find this feedback useful to you. Thanks and keep up the good work!

Unable to rotate Images

There is no option to rotate an image. If an image is loaded upside down there is no option to rotate it to the proper orientation.

Please fix this issue!

Add support for cropping function to work when zoomed in

Currently the crop function do not save correctly when zoomed in, since I do not know how to calculate that.

The zoom function is based on a heavily modified version of ZoomBorder.cs, which is based on changing the values of ScaleTransform and TranslateTransform. My code is at /PicView/UILogic/TransformImage/Zoom.cs

The cropping is based on https://github.com/dmitryshelamov/UI-Cropping-Image my code is at PicView/Editing/Crop

GetCrop() line 136 in CropFunctions.cs is where the calculation takes place. ImageMagick libraries takes care of the actual cropping.

PicView.EditTitleBar crashes app when no image is loaded.

Describe the bug
Launched the app and went to move the window by grabbing the title bar. Inadvertently, I clicked the "No image loaded" message and that caused the app to crash. The issue looks to be caused by PicView.EditTitleBar.EditTitleBar_Text:

Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at PicView.EditTitleBar.EditTitleBar_Text(Object sender, KeyboardFocusChangedEventArgs e)
   at System.Windows.Input.KeyboardFocusChangedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)

To Reproduce
Steps to reproduce the behavior:

  1. Download the win-x64.7z file.
  2. Launch the app from the .exe
  3. Click the "No Image Loaded" area of the title bar when no image is loaded.

Expected behavior
If no image is loaded, no edit title bar behavior should be observed.

Nice app though :)

EDIT -- Should note that building the app from the source code does not produce this behavior.

[FR] horizontal gallery improvements : display uncropped images ?

Is your feature request related to a problem? Please describe.
some suggestions for the horizontal gallery view:

  • add an option to display the horizontal gallery thumbnails with fixed height but adaptative width so that they are not cropped to square ratio, as in the example below:
    image

  • additionnal setting for custom thumbnail height (slider ?)

  • additionnal adjustments for padding/margin between the images

  • also the thumbnail generation takes a very long time compared to other viewers in the current version (test folder containing 100 pics of 4860x3280 on a network folder, current picview takes about 600-700ms to display a thumbnail, see the gif below. xnview is about x10 times faster on first navigation without using thumbnail cache/indexing)
    R1700-LAST10_20211105_1204_jaWYZ5zEW2

Fullscreen - Image Info Crash

Describe the bug
When in fullscreen, attempting to show the 'Image Info' window crashes the app.

To Reproduce
Steps to reproduce the behavior:

  1. Open any image.
  2. Go into Fullscreen mode.
  3. Right-click the image, and select "Image Info".

Expected behavior
The "Image Info" window (box) should present itself the same way the button works when not in fullscreen mode.

Additional context
The issue looks to be a null reference exception from UILogic\ConfigureWindow.cs --

GetEffectsWindow.Topmost = true;

It can be fixed by changing the line to

GetImageInfoWindow.Topmost = true;

Window wrongly positionned on High-DPI screen

Describe the bug
When launching PicView on my high-DPI screen (4K resolution on 17" screen, with zoom set as 200% in Windows), the window is not centered in the screen but partially outside the visible area in the bottom-right corner.
The problem does not appear if I launch PicView without image, and the window size is correctly set.

To Reproduce
Steps to reproduce the behavior:

  1. In the Windows 10 Settings app, Display section, set a zoom factor to 200%
  2. Apply the settings
  3. Open any picture with PicView
  4. See error

Thank you in advance for the resolution.

Improve Pan & Zoom

Improve how zooming function is handled.
Currently using a modified Zoomborder.cs from https://stackoverflow.com/a/6782715/13646636 but it needs to not allow image to be dragged outside of its parent container.

Describe the solution you'd like
Hopefully something that works with both vertical and horizontal scrolling when zoomed in.
Currently looking at https://stackoverflow.com/a/60515117/13646636

Additional context
Disable scaling (when Ctrl is held down). Don't allow it to work with normal scrolling, as that wouldn't make much sense and be too much of a head ache.

Fix window not staying in place when changing images

Currently the window is forced to center, to avoid gradually losing center position.

This would be nice to fix, so that you could drag the application around and change images, while still having it the window resizing.

Like how JPEGView works (which this application is heavily inspired by).

Resizing is done by a window sizing override

protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)

and a function to scale the image

internal static void FitImage(double width, double height)

`settings` is crashing the app

Describe the bug
every time I go to settings, the app closes without any warning after a few seconds (cursor is thinking - in spinning blue circle mode).
event viewer log:

Application: PicView.exe
CoreCLR Version: 6.0.21.48005
.NET Version: 6.0.0-rc.2.21480.5
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Globalization.CultureNotFoundException: Culture is not supported. (Parameter 'name')
zh_CN is an invalid culture identifier.
   at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride)
   at System.Globalization.CultureInfo..ctor(String name)
   at PicView.Views.Windows.SettingsWindow.<.ctor>b__0_0(Object <p0>, EventArgs <p1>)
   at System.Windows.Window.OnContentRendered(EventArgs e)
   at System.Windows.Window.<>c.<PostContentRendered>b__204_0(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run()
   at PicView.App.Main()

running v1.5.5 portable with admin rights on win 10 x64 (tried the standalone portable and the .net-dependant version with similar output)

Add translations

If you would like to translate PicView, please have a look at my guide:

  1. Make a fork of this repository
  2. Copy en.json from /Config/Languages and rename it to your two letter language code (wiki).
  3. Edit the left side values of the xx.json file to your language.
  4. Issue a pull request.

If you want to test it
not required

  1. Open the project with the latest version of Visual Studio and have the latest .NET SDK installed.
  2. Add the two letter language code to the enum PicView.Core/Localization/Languages.cs.
  3. Start the app and change the language in the settings window F4.

Auto update

Describe the solution you'd like
A solution that auto updates at application shutdown and then updates it in the background, so next time it's launched, it would be a new version.

I want a setting that allows me to set the zoom speed with mouse scroll wheel

It would be nice to have a way to control how fast zoom happens with the mouse scroll wheel. Currently, it feels rather slow and takes a long time to zoom in really close.

In the settings dialog, I would like a section that allows me to control the zoom; this could take the form of some sort of slider, but open to suggestions.

Opening settings in fullscreen mode should get focus

To Reproduce

  1. Open some image in fullscreen
  2. Right click > settings > show all settings window
  3. The thing stays in the background

Expected behavior
Either the window gets in the foreground while maintaining fullscreen, or fullscreen is disabled with focus on such window.

Additional context
Idk if setting windows should be supposed to always be in the foreground while opened, or just be treated as a normal window.

Support for animated GIFs

Is your feature request related to a problem? Please describe.
PicView supports a wide assortment of image filetypes. While GIF is one of them, animated GIFs are not.

Describe the solution you'd like
I would like to know if PicView can support playing animated GIFs, as this is vital for me not to have another program installed just to play one image filetype.

Describe alternatives you've considered
I tried opening the GIF right from within PicView as opposed to opening the image directly. Didn't help. The animation still played in Internet Explorer, Firefox, IrfanView, Windows Photo Viewer, Photos, etc.

Additional context
Running latest version of PicView on latest release of Windows 10.

Example animated GIF

InnoSetup installation wizard Chinese language interface garbled

InnoSetup installation wizard Chinese language interface garbled。

If you run the installation wizard in a simplified Chinese system, there will be garbled Chinese characters in the installation interface, which will cause it to be incorrect.

Please check the InnoSetup Simplified Chinese language file, its file encoding should be UTF-8-BOM encoding(.lng) or GB2312(.isl).

Thank you for your work! :-)

Resize image window

Planning to add a new window with resizing options, including thumbnail generation for a single image - and then later update it to batch resize all files in folder

Problems about windowed-fullscreen

Firstly, the tool is pretty awesome. Thanks : )

When i open an image in windowed mode, it looks like this

https://imgur.com/HN6zigM

Making window smaller manually shows the taskbar again, but it is pretty annoying.

It is even more annoying when i use fullscreen mode, because it prevents using alt+tab. (this is the most annoying thing)

Embed custom font

#58
Having trouble embedding font in Avalonia, crashes with cannot create glyph message

EXIF window

Planning to add a new simple window in addition to the Image Info window, with similar behavior, but shows show stats like Camera info, color representation etc.

Just imagine the file properties window, but dynamically changing when you switch image.

Installer triggers Windows SmartScreen block

Describe the bug
PicView's installer gets blocked by Windows SmartScreen.

To Reproduce
Steps to reproduce the behavior:

  1. Run the installer
  2. See the SmartScreen page

Expected behavior
The installer should be properly formatted so it does not get stopped by SmartScreen.

Screenshots
image

Additional context
Windows 10 21H1 19043.1165

Order of images when navigating through files in directory

When you are viewing an image in a directory that contains many images, you are able to iterate over the files to look at other images in the directory.

However, it is possible to have the order of the images reflect what is currently observed in the directory?

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.