https://github.com/k3b/losslessjpgcrop
Android lossles jpg cropping app without reencoding quality-losses
https://github.com/k3b/losslessjpgcrop
android android-image-cropper cropper images intent-interface jpg libjpeg lossless mozjpeg photos
Last synced: about 1 month ago
JSON representation
Android lossles jpg cropping app without reencoding quality-losses
- Host: GitHub
- URL: https://github.com/k3b/losslessjpgcrop
- Owner: k3b
- License: gpl-3.0
- Created: 2019-04-18T13:45:41.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-07T08:31:55.000Z (3 months ago)
- Last Synced: 2025-03-26T23:07:16.948Z (about 2 months ago)
- Topics: android, android-image-cropper, cropper, images, intent-interface, jpg, libjpeg, lossless, mozjpeg, photos
- Language: Java
- Homepage:
- Size: 2.8 MB
- Stars: 62
- Watchers: 4
- Forks: 10
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#
LLCrop
Loss Less Cropping and Image Rotation: Remove unwanted parts of jpg photo without quality loss.
While there are many apps capable of cropping images (often with additional features),
they generally cause quality loss because they
[re-encode to JPEG again](https://en.wikipedia.org/wiki/Lossy_compression) when saving the output file.LLCrop (the "LL" stands for lossless) can [crop JPEG images without quality loss](https://en.wikipedia.org/wiki/Lossy_compression#JPEG)
because it crops the raw JPEG image without re-encoding the file. It also preserves embedded metadata (EXIF/IPTC and XMP).Simply load a JPEG image from the in-app image browser, adjust the rectangular selection, rotate it if necessary and save it as a new image file.
Note: This app is focused on lossless JPEG image manipulation, so issues that propose additional
features (e.g. support for other file formats, add resize-support or adding text to images) are out of scope.---
## Supported Workflows and Features:
* Workflow [#1](https://github.com/k3b/LosslessJpgCrop/issues/1) : From Android **app launcher**:
* Pick an image and crop it to a new public file![]()
* Workflow [#1](https://github.com/k3b/LosslessJpgCrop/issues/1) : From any **file manager** or **gallery app** that supports [intent-action-EDIT](https://developer.android.com/reference/android/content/Intent#ACTION_EDIT) for MIME *image/jpeg*:
* Crop current selected image to a new public file![]()
* Workflow [#2](https://github.com/k3b/LosslessJpgCrop/issues/2) : From any app that supports [intent-action-SEND](https://developer.android.com/reference/android/content/Intent#ACTION_SEND) or [intent-action-SEND-TO](https://developer.android.com/reference/android/content/Intent#ACTION_SENDTO) for MIME *image/jpeg*
* Send/SendTo/Share a cropped version of the currently selected image![]()
* Workflow [#3](https://github.com/k3b/LosslessJpgCrop/issues/3)/[#8](https://github.com/k3b/LosslessJpgCrop/issues/8) : From any app that supports [intent-action-GET-CONTENT](https://developer.android.com/reference/android/content/Intent#ACTION_GET_CONTENT) or intent-action-PICK for MIME *image/jpeg*
* Open/Pick the cropping of an uncropped image
* Feature [#17](https://github.com/k3b/LosslessJpgCrop/issues/17) (Since Version 1.2) : added support for image rotation![]()
* Feature [#35](https://github.com/k3b/LosslessJpgCrop/issues/35) (Since [Version 1.3](https://github.com/k3b/LosslessJpgCrop/milestone/5)) : Display current crop box coordinates and size
* Show XY offset of top left corner of crop box displayed along with it's dimensions.
* You can get more predictable results by sticking to 8 or 16 multiples for offset and box size allows to target aspect ratio.
* Feature [#15](https://github.com/k3b/LosslessJpgCrop/issues/15) (Since [Version 1.3](https://github.com/k3b/LosslessJpgCrop/milestone/5)) : Define crop box size or aspect ratio![]()
* if you set width and height to a value below 100 then you define the aspect ratio of the cropping result. Example 9x13
* if you set width and height to a value above 100 then you define the absolute size in pixel of the cropping result. Example 400x600---
## Requirements
* Android 4.4 KitKat (API 19) or newer
* CPU arm64-v8a, arbeabi-v7a, x86 or x86_64 because of the C++ cropping code
* Permissions
* READ_EXTERNAL_STORAGE (to open a local image)
* WRITE_EXTERNAL_STORAGE (to save the cropped image)---
[
](https://f-droid.org/packages/de.k3b.android.lossless_jpg_crop)
[](https://f-droid.org/packages/de.k3b.android.lossless_jpg_crop)