Page MenuHomePhabricator

GSoC 2026 Proposal: Implement Lossless JPG Transformations (Hasan Mukhtar)
Closed, DeclinedPublicFeature

Description

Feature summary :
Implement a system for the Wikimedia Commons Android App that allows for lossless image transformations (rotation and cropping). This project aims to replace standard Bitmap re-encoding with metadata-based and bitstream-level manipulations to ensure 100% quality preservation for educational media.

Use case(s) :
Currently, when a contributor rotates an image in the app, the standard Android Bitmap API decodes the JPEG, rotates the pixels, and re-encodes it. This process creates "generation loss," introducing compression artifacts that degrade the quality of high-standard repository images.

Attached Proposal PDF:

Benifits:
Preserving Archival Integrity: We can eliminate generation loss by bypassing the standard Android "decode-rotate-encode" cycle. This ensures that high-resolution educational images on Wikimedia Commons remain 100% true to the original contributor's upload, without new compression artifacts appearing after a simple crop or rotate.

Optimizing Mobile Resources: Changing via ExifInterface are nearly instantaneous cuz they only modify the file header. This makes the app much faster and more responsive on lower-end devices, as it avoids the heavy CPU and RAM consumption required for full Bitmap processing.

Professional-Grade Mobile Tools: Implementing lossless bitstream manipulation brings the Android app’s capabilities in line with professional desktop software that provides contributors with a "server-grade" workflow directly on their mobile devices, maintaining the high standards expected by the Wikimedia community.

Event Timeline

The "Benefits" section sounds like AI-generated buzzwords :-/

Hi Hasan,

Sorry for the lack of answer above. Yes, it is fine (and expected) that the GSoC proposal is exactly the same.

It seems like you selected "Project Size: Medium" on the GSoC website.
I know it is confusing, but the template "Expected size of the project: 350 hours" actually translates to "Project Size: Large" on GSoC... the choice affects the stipend amount.

Did you choose that "Medium" value on purpose, for instance because you have less time available than required for "Large"?
I don't know whether that can be modified, but if it can, do you want to switch to "Large"?
Thank you!

Hi Nicolas_Raoul,

Thank you for the clarification regarding the project size.

I would like to update my proposal to the "Large" project size (350 hours).
Selecting "Medium" on the website was a mistake; I am fully committed to
the 350 hours of work described in the project template and have planned my
schedule accordingly.

If it is still possible to modify this, I would definitely like to switch
to "Large."

Best regards,
Hasan IT

Gopavasanth subscribed.

Hi, thank you for your submission and the effort you put into your proposal. This year we received over 380 strong applications, and unfortunately we were not able to offer you a slot. This was a very competitive process, and many high quality proposals could not be selected. We truly encourage you to stay engaged and continue contributing to Wikimedia projects. Over the years, many contributors who were not selected for Google Summer of Code have gone on to make impactful contributions and become long term members of the community. Please do not see this as a failure, but as a step forward in your journey. We would love to stay in touch and support your continued involvement.

If you would like guidance on how to contribute to our projects outside GSoC, feel free to reach out to any of the mentors or org admins, they will be happy to help you get started.

You can get started or continue contributing here:

We hope to see your contributions in our community soon.