Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/k3b/LosslessJpgCrop
Browse files Browse the repository at this point in the history
  • Loading branch information
k3b committed Jun 4, 2019
2 parents 753abad + a76d253 commit bdfadd8
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 17 deletions.
37 changes: 25 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,41 @@
llCrop allows you to either [remove unwanted outer areas from a jpg-photo](https://en.wikipedia.org/wiki/Cropping_(image))
or to create zoom-ins.
llCrop allows either [removal of unwanted outer areas from a JPEG-photo](https://en.wikipedia.org/wiki/Cropping_(image))
or creation of zoom-ins.

Just load a jpeg photo, select a rectangle and save the rectangle as a new photo-file.
Load a JPEG photo, make a rectangular selection, to be saved as a new photo-file.

While there are many apps that can crop images (and may have many more features) these apps cause [quality-losses caused by
jpg-re-encoding](https://en.wikipedia.org/wiki/Lossy_compression).
While there are many apps capable of cropping images (some with additional features) these apps cause [quality-losses caused by reencoding of JPEG](https://en.wikipedia.org/wiki/Lossy_compression).

llCrop ("ll" stands for loss-less) can do [cropping without quality-losses](https://en.wikipedia.org/wiki/Lossy_compression#JPEG) because it crops
in the raw jpg-photo-data without
the need for jpg-image-re-encoding. It also preserves embedded meta data (Exif/Iptc and xmp)
llCrop ("ll" stands for lossless) can do [cropping without quality-losses](https://en.wikipedia.org/wiki/Lossy_compression#JPEG) because it crops the raw JPEG photo, without
the need to reencode the JPEG image. It also preserves embedded metadata (EXIF/IPTC and XMP).

Note:

This app if focused on "lossless jpg" image manipulation so isses that propose additional features
like "add text to image" or support "png" file format are out of scope.

---

## Supported Workflows:

* [#1](https://github.com/k3b/LosslessJpgCrop/issues/1) From Android **App-Launcher**:
* Pick an image and crop it to a new public file
* [#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*:
* [#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
* [#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 current selected image
* [#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*
* [#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
* [#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

---

## 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)

---

[<img src="https://github.com/k3b/APhotoManager/wiki/fdroid.png" alt="available on F-Droid app store" height="82" width="324">](https://f-droid.org/en/packages/de.k3b.android.lossless_jpg_crop)
15 changes: 15 additions & 0 deletions app/src/main/res/values-nb-rNO/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<resources>
<string name="app_name">llCrop (tapsfri)</string>

<string name="label_select_picture">Velg bilde</string>
<string name="label_save_as">Lagre som</string>
<string name="label_send">Send/del</string>

<string name="permission_title_rationale">Tilgang kreves</string>
<string name="permission_read_storage_rationale">Lagringslesetilgang, for å velge filer.</string>
<string name="permission_write_storage_rationale">Lagringsskrivetilgang, for å lagre bilder.</string>

<string name="toast_cannot_retrieve_selected_image">Avslutter: Inget bilde valgt</string>
<string name="toast_saved_as">Lagret som \'%1$s\'</string>
<string name="toast_saved_error">Kan ikke lagre som \'%1$s\'.\n\n%2$s</string>
</resources>
10 changes: 5 additions & 5 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<resources>
<string name="app_name">llCrop (Loss Less)</string>
<string name="app_name">llCrop (lossless)</string>

<string name="label_select_picture">Select Picture</string>
<string name="label_select_picture">Select picture</string>
<string name="label_save_as">Save as</string>
<string name="label_send">Send/Share to</string>
<string name="label_send">Send/share to</string>

<string name="permission_title_rationale">Permission needed</string>
<string name="permission_read_storage_rationale">Storage read permission is needed to pick files.</string>
<string name="permission_write_storage_rationale">Storage write permission is needed to save the image.</string>
<string name="permission_read_storage_rationale">Storage reading permission needed to pick files.</string>
<string name="permission_write_storage_rationale">Storage writing permission needed to save images.</string>

<string name="toast_cannot_retrieve_selected_image">Quitting: No source image selected</string>
<string name="toast_saved_as">Saved as \'%1$s\'</string>
Expand Down

0 comments on commit bdfadd8

Please sign in to comment.