shinestacker 1.8.1__tar.gz → 1.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of shinestacker might be problematic. Click here for more details.
- {shinestacker-1.8.1 → shinestacker-1.9.1}/CHANGELOG.md +30 -0
- {shinestacker-1.8.1/src/shinestacker.egg-info → shinestacker-1.9.1}/PKG-INFO +3 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/README.md +3 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/gui.md +13 -13
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/main.md +2 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/pyproject.toml +2 -0
- shinestacker-1.9.1/src/shinestacker/_version.py +1 -0
- shinestacker-1.9.1/src/shinestacker/algorithms/exif.py +546 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/multilayer.py +6 -4
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/stack.py +26 -14
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/stack_framework.py +2 -2
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/utils.py +18 -2
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/vignetting.py +1 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/main.py +1 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/constants.py +0 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/action_config_dialog.py +2 -5
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/config_dialog.py +6 -5
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/folder_file_selection.py +3 -2
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/gui_run.py +2 -2
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/new_project.py +5 -5
- shinestacker-1.9.1/src/shinestacker/retouch/exif_data.py +75 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/file_loader.py +3 -3
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/image_editor_ui.py +45 -2
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/io_gui_handler.py +13 -15
- {shinestacker-1.8.1 → shinestacker-1.9.1/src/shinestacker.egg-info}/PKG-INFO +3 -1
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker.egg-info/SOURCES.txt +0 -1
- shinestacker-1.8.1/img/gui-finder.png +0 -0
- shinestacker-1.8.1/src/shinestacker/_version.py +0 -1
- shinestacker-1.8.1/src/shinestacker/algorithms/exif.py +0 -240
- shinestacker-1.8.1/src/shinestacker/retouch/exif_data.py +0 -52
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.coveragerc +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.flake8 +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.github/workflows/ci-multiplatform.yml +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.github/workflows/pylint.yml +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.github/workflows/pypi-publish.yml +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.github/workflows/release.yml +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.gitignore +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.pylintrc +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/.readthedocs.yaml +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/LICENSE +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/MANIFEST.in +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/THIRD_PARTY_LICENSES.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/alignment.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/api.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/balancing.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/conf.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/focus_stacking.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/index.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/job.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/macos-install.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/multilayer.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/noise.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/requirements.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/docs/vignetting.md +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/coffee.gif +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/coffee_stack.jpg +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/extreme-vignetting.jpg +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/flies.gif +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/flies_stack.jpg +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/flow-diagram.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/gui-project-new.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/gui-project-run.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/img/gui-retouch.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/index.html +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/requirements.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/build_release.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/create_macos_icon.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/git-rev-list.sh +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/hooks/hook-IPython.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/hooks/hook-PySide6.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/hooks/hook-opencv.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/hooks/hook-tests.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/scan_imports.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/shinestacker-inno-setup.iss +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/scripts/validate-tomli.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/setup.cfg +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/align.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/align_auto.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/align_parallel.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/balance.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/base_stack_algo.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/corrections.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/denoise.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/depth_map.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/noise_detection.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/pyramid.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/pyramid_auto.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/pyramid_tiles.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/sharpen.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/algorithms/white_balance.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/about_dialog.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/args_parser_opts.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/gui_utils.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/help_menu.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/open_frames.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/project.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/retouch.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/app/settings_dialog.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/app_config.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/config.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/gui_constants.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/config/settings.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/colors.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/core_utils.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/exceptions.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/framework.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/core/logging.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/action_config.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/base_form_dialog.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/colors.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/flow_layout.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/gui_images.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/gui_logging.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/ico/shinestacker.icns +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/ico/shinestacker.ico +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/ico/shinestacker.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/ico/shinestacker.svg +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/dark/close-round-line-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/dark/forward-button-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/dark/play-button-round-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/dark/plus-round-line-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/dark/shinestacker_bkg.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/light/close-round-line-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/light/forward-button-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/light/play-button-round-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/light/plus-round-line-icon.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/img/light/shinestacker_bkg.png +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/main_window.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/menu_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/project_controller.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/project_converter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/project_editor.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/project_model.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/recent_file_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/select_path_widget.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/sys_mon.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/tab_widget.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/gui/time_progress_bar.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/__init__.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/adjustments.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/base_filter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/brush.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/brush_gradient.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/brush_preview.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/brush_tool.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/denoise_filter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/display_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/filter_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/icon_container.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/image_view_status.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/image_viewer.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/io_threads.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/layer_collection.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/overlaid_view.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/paint_area_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/shortcuts_help.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/sidebyside_view.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/transformation_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/undo_manager.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/unsharp_mask_filter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/view_strategy.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/vignetting_filter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker/retouch/white_balance_filter.py +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker.egg-info/dependency_links.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker.egg-info/entry_points.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker.egg-info/requires.txt +0 -0
- {shinestacker-1.8.1 → shinestacker-1.9.1}/src/shinestacker.egg-info/top_level.txt +0 -0
|
@@ -2,6 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
This page reports the main releases only and the main changes therein.
|
|
4
4
|
|
|
5
|
+
## [v1.9.1] - 2025-10-23
|
|
6
|
+
** Improved EXIF data handling GUI refinements **
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- missing actions "Show EXIF Data" and "Delete EXIF Data"
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- if saving EXIF data fails, a warning is issued instead of stopping the run
|
|
13
|
+
- exif data correctly loaded when opening image file in retouch mode
|
|
14
|
+
- removed duplicated parameter from config dialog (FocusStackBunch)
|
|
15
|
+
- fixed thread warning when the application quits
|
|
16
|
+
- more robust EXIF data code for JPG format prevents possible errors
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- improved EXIF GUI: more data displayed and improved selection logic
|
|
20
|
+
|
|
21
|
+
-----
|
|
22
|
+
|
|
23
|
+
## [v1.9.0] - 2025-10-19
|
|
24
|
+
** Added PNG format support and fixed EXIF failure **
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- support of images in PNG format, both in 8 bit and 16 bit depth. Note: EXIF data are not supported for 16 bit PNG because of limitations in the PIL and Open CV python libraries.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- if saving EXIF data fails, a warning is issued instead of stopping the run
|
|
31
|
+
|
|
32
|
+
-----
|
|
33
|
+
|
|
34
|
+
|
|
5
35
|
## [v1.8.1] - 2025-10-16
|
|
6
36
|
** Alignment stability and performance improvements **
|
|
7
37
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shinestacker
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: ShineStacker
|
|
5
5
|
Author-email: Luca Lista <luka.lista@gmail.com>
|
|
6
6
|
License-Expression: LGPL-3.0
|
|
@@ -105,11 +105,13 @@ Pyramid methods in image processing
|
|
|
105
105
|
- **Logo**: The Shine Stacker logo was designed by [Alessandro Lista](https://linktr.ee/alelista). Copyright © Alessandro Lista. All rights reserved. The logo is not covered by the LGPL-3.0 license of this project.
|
|
106
106
|
|
|
107
107
|
## Attribution request
|
|
108
|
+
|
|
108
109
|
📸 If you publish images created with Shine Stacker, please consider adding a note such as:
|
|
109
110
|
|
|
110
111
|
*Created with Shine Stacker – https://github.com/lucalista/shinestacker*
|
|
111
112
|
|
|
112
113
|
This is not mandatory, but highly appreciated.
|
|
114
|
+
|
|
113
115
|
---
|
|
114
116
|
> Developed and maintained by [Luca Lista](https://github.com/lucalista).
|
|
115
117
|
> 💡 Contributions, feedback, and feature suggestions are warmly welcome.
|
|
@@ -73,12 +73,14 @@ Pyramid methods in image processing
|
|
|
73
73
|
- **Logo**: The Shine Stacker logo was designed by [Alessandro Lista](https://linktr.ee/alelista). Copyright © Alessandro Lista. All rights reserved. The logo is not covered by the LGPL-3.0 license of this project.
|
|
74
74
|
|
|
75
75
|
## Attribution request
|
|
76
|
+
|
|
76
77
|
📸 If you publish images created with Shine Stacker, please consider adding a note such as:
|
|
77
78
|
|
|
78
79
|
*Created with Shine Stacker – https://github.com/lucalista/shinestacker*
|
|
79
80
|
|
|
80
81
|
This is not mandatory, but highly appreciated.
|
|
82
|
+
|
|
81
83
|
---
|
|
82
84
|
> Developed and maintained by [Luca Lista](https://github.com/lucalista).
|
|
83
85
|
> 💡 Contributions, feedback, and feature suggestions are warmly welcome.
|
|
84
|
-
> If you enjoy Shine Stacker, consider giving it a ⭐️ on GitHub — it really helps visibility!
|
|
86
|
+
> If you enjoy Shine Stacker, consider giving it a ⭐️ on GitHub — it really helps visibility!
|
|
@@ -12,24 +12,28 @@ noisy pixel masking.
|
|
|
12
12
|
|
|
13
13
|
## Starting
|
|
14
14
|
|
|
15
|
-
*
|
|
15
|
+
* The python package can be installed from [PyPI](https://pypi.org/project/shinestacker/) using ```pip```:
|
|
16
16
|
|
|
17
17
|
```console
|
|
18
|
-
>
|
|
18
|
+
> pip install shinestacker
|
|
19
19
|
```
|
|
20
|
+
Onace installed, the GUI app can start either from a console command line :
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
```console
|
|
23
|
+
> shinestacker
|
|
24
|
+
```
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
* The app can be dowloaded from the [releases page](https://github.com/lucalista/shinestacker/releases):
|
|
27
|
+
- Windows: as installer or ```zip``` archive for local installation
|
|
28
|
+
- macOS: as ```dmg``` disk image, where the app can be dragged to the Application folder
|
|
29
|
+
- Linux: as ```tar.gz``` archive
|
|
26
30
|
|
|
27
31
|
The GUI has two main working areas:
|
|
28
32
|
|
|
29
33
|
* *Project*
|
|
30
34
|
* *Retouch*
|
|
31
35
|
|
|
32
|
-
Switching from *Project* to *Retouch* can be done from the *
|
|
36
|
+
Switching from *Project* to *Retouch* can be done from the *ShineStacker* main menu.
|
|
33
37
|
|
|
34
38
|
## Project area
|
|
35
39
|
|
|
@@ -48,17 +52,13 @@ When the app starts, it proposes to create a new project.
|
|
|
48
52
|
|
|
49
53
|
> **Large Set Tip**: For 100+ images:
|
|
50
54
|
> - Split into 10-15 image "bunches"
|
|
51
|
-
> - Set frame
|
|
55
|
+
> - Set number of overlapping frame from consecutive bunches
|
|
52
56
|
> - Combine intermediate results later
|
|
53
57
|
|
|
54
|
-
> 💡 **RAM Warning**: >15 images of 20Mpx resolution may need 16GB+ RAM. Combine smaller bunches first, if needed, to stack up to hundreds of frames.
|
|
55
|
-
|
|
56
58
|
The newly created project consists of a single job that contains more actions.
|
|
57
59
|
Each action produces a folder as output that has, by default, the action's name.
|
|
58
60
|
Some actions can be combined in order to produce a single intermediate output (alignment, balancing, etc.).
|
|
59
61
|
|
|
60
|
-
**Action Outputs**: 📁 `aligned-balanced/` | 📁 `bunches/` | 📁 `stacked/`
|
|
61
|
-
|
|
62
62
|
> **Pro Tip**: Duplicate jobs when processing similar image sets to save configuration time. You can run multiple jobs in sequence.
|
|
63
63
|
|
|
64
64
|
It is possible to run a single job, or all jobs within a project.
|
|
@@ -67,7 +67,7 @@ It is possible to run a single job, or all jobs within a project.
|
|
|
67
67
|
|
|
68
68
|
### Project Run Tabs
|
|
69
69
|
|
|
70
|
-
1. Job progress bar
|
|
70
|
+
1. Job progress bar with CPU and RAM usage monitor
|
|
71
71
|
2. Real-time log viewer
|
|
72
72
|
3. Retouch button (enabled after processing)
|
|
73
73
|
|
|
@@ -103,5 +103,6 @@ pip install ipywidgets
|
|
|
103
103
|
|
|
104
104
|
| Issue | Workaround |
|
|
105
105
|
|----------|----------------|
|
|
106
|
-
|
|
|
106
|
+
| RAW format unsupported | Convert to TIFF/JPEG first |
|
|
107
|
+
| EXIF data not supported for 16-bit PNG files | convert to 16-bit TIFF first |
|
|
107
108
|
| GUI tests limited | Report any bugs as GitHub issuse |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.9.1'
|