Skip to content

Using rawler instead imagepipe + rawloader#1572

Merged
qarmin merged 2 commits into
masterfrom
rawler_instead_imagepipe
Jul 26, 2025
Merged

Using rawler instead imagepipe + rawloader#1572
qarmin merged 2 commits into
masterfrom
rawler_instead_imagepipe

Conversation

@qarmin
Copy link
Copy Markdown
Owner

@qarmin qarmin commented Jul 25, 2025

Rawler is a still-developed fork of rawloader, and allows reading CR3 files.

It has many dependencies (like image-rs) updated, which can reduce the number of lines in Cargo.lock.
However, it currently includes a lot of unused dependencies — this will be fixed in this PR: https://github.com/dnglab/dnglab/pull/568/files

Similarly to rawloader, it hasn't been fuzzed extensively, so it still contains many crashes when loading corrupted files (Czkawka catches this panics with default panic="unwind" options).

It produces a little different results than imagepipe, but this shouldn't be really a big problem

It is also usually about 2× faster than ImagePipe + rawloader.

ImagePipe - Raw loader: 34.786383ms, 
ImagePipe - After creating source: 20ns, 
ImagePipe - After loading pipeline: 6.723µs, 
ImagePipe - After running pipeline: 218.788619ms, 
ImagePipe - After getting output image: 233.299854ms, 
ImagePipe - After creating image buffer: 120ns, 
ImagePipe - After rendering image: 20ns, 
ImagePipe - Everything: 486.884475ms <------------------------------------------------
Rawler - After reading file: 5.694329ms, 
Rawler - After creating RawSource: 6.528906ms, 
Rawler - After getting decoder: 72.788µs, 
Rawler - After decoding raw image: 8.511316ms, 
Rawler - After developing raw image: 156.943147ms, 
Rawler - After converting to DynamicImage: 83.469953ms, 
Rawler - After reconverting to RGB: 13.638055ms, 
Rawler - Everything: 274.862863ms <------------------------------------------------
==============
ImagePipe - Raw loader: 123.713938ms, 
ImagePipe - After creating source: 20ns, 
ImagePipe - After loading pipeline: 7.714µs, 
ImagePipe - After running pipeline: 506.114654ms, 
ImagePipe - After getting output image: 560.2682ms, 
ImagePipe - After creating image buffer: 20ns, 
ImagePipe - After rendering image: 10ns, 
ImagePipe - Everything: 1.190107983s <------------------------------------------------
Rawler - After reading file: 2.340491ms, 
Rawler - After creating RawSource: 2.02443ms, 
Rawler - After getting decoder: 94.309µs, 
Rawler - After decoding raw image: 114.020839ms, 
Rawler - After developing raw image: 373.732536ms, 
Rawler - After converting to DynamicImage: 207.200703ms, 
Rawler - After reconverting to RGB: 44.261313ms, 
Rawler - Everything: 743.680021ms <------------------------------------------------

@qarmin qarmin requested a review from Copilot July 25, 2025 20:03
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR replaces the imagepipe + rawloader combination with rawler, a fork of rawloader that offers better performance and supports CR3 files. The change affects raw image processing throughout the codebase and includes performance improvements (~2x faster) and support for additional raw formats.

Key changes:

  • Replace imagepipe + rawloader dependencies with rawler
  • Refactor raw image processing logic to use rawler's API
  • Extract timer utility into a reusable component

Reviewed Changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
misc/test_image_perf/src/main.rs Replace imagepipe/rawloader with rawler API and extract timer functionality
misc/test_image_perf/Cargo.toml Update dependencies to use rawler instead of imagepipe/rawloader
czkawka_core/src/common_image.rs Update raw image processing to use rawler API
czkawka_core/Cargo.toml Replace imagepipe/rawloader with rawler dependency
czkawka_core/src/common.rs Add CR3 extension to supported raw image formats
czkawka_core/src/helpers/* Create helpers module with extracted timer and delayed sender utilities
krokiet/src/model_operations/model_processor.rs Update import path for delayed sender
Changelog.md Document the library replacement change

Comment thread czkawka_core/src/common_image.rs
Comment thread misc/test_image_perf/src/main.rs
Comment thread czkawka_core/src/common.rs
@qarmin qarmin merged commit 1a90bf8 into master Jul 26, 2025
34 checks passed
@qarmin qarmin deleted the rawler_instead_imagepipe branch July 26, 2025 05:28
SpeedyGX pushed a commit to SpeedyGX/czkawka that referenced this pull request Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants