ark-builders / ark-retouch-legacy Goto Github PK
View Code? Open in Web Editor NEWQuick image editor for Android
License: GNU General Public License v3.0
Quick image editor for Android
License: GNU General Public License v3.0
When we change editor mode, e.g. from "cropping" to "drawing", all modifications are reset. The same if we change editor mode from "drawing" to "cropping". But when we switch back, drawing modifications are remembered. Cropping modifications are not remembered at all.
What is expected is to preserve all modifications in the same state and make user capable of composing operations.
In cropping mode, an image occupies all available space after rotation and multiple rotations don't affect quality of the picture.
In drawing mode, the same image becomes small after rotation and also quality degrades with each rotation, which is noticeable after multiple rotations — the picture becomes blurry.
When a user is done with editing and is saving modified version into folder containing the original version, we want to pass both paths back into ARK Navigator. This action must be supported in ARK Navigator as well — we want to link both versions (this requires ARK-Builders/ARK-Navigator#40) and port tags from older version to newer one. We must be sure that we perform this linking before ARK Navigator performed re-indexation. In case of overwriting, the paths coincide and re-indexation would erase old version of the resource from the index and we would be unable to extract it's id and tags information.
After linking the two versions we can port tags from older version to the newer as well.
Can't undo action made before phone orientation changed.
Would be cool if Retouch could put text labels on images. For this we need additional button which puts dragable bubble and editable text inside. Would be great to be able to change shape and color of the bubble as well (or just disable the bubble and leave only plain text).
java.lang.IllegalArgumentException: x + width must be <= bitmap.width()
at android.graphics.Bitmap.createBitmap(Bitmap.java:984)
at android.graphics.Bitmap.createBitmap(Bitmap.java:950)
at space.taran.arkretouch.EditActivity$cropImage$2.invokeSuspend(EditActivity.kt:718)
at space.taran.arkretouch.EditActivity$cropImage$2.invoke(Unknown Source:8)
at space.taran.arkretouch.EditActivity$cropImage$2.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:166)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1)
at space.taran.arkretouch.EditActivity.cropImage(EditActivity.kt:710)
at space.taran.arkretouch.EditActivity.access$cropImage(EditActivity.kt:136)
at space.taran.arkretouch.EditActivity$saveImageFromCropOrDrawMode$1.invokeSuspend(EditActivity.kt:683)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@82b1758, Dispatchers.IO]
Turning the phone makes our app lose current state including all image modifications and editor mode (cropping or drawing).
When 2nd time image is selected from file picker, the default selection in toolbar is gone and show only some options from crop mode. not all option visible.
.
Steps to allow access are on the wrong action for first use
Similar to #53, but with result of drawing after switching to crop mode.
We need a micro-editor for images, analogous to editors embedded into default Gallery or Telegram apps.
Only cropping, rotating, text labels and hand writing of different colors are necessary.
Must be implemented in Kotlin and support Android 9 and higher.
Support of older versions of Android isn't required.
The editor must be able to save new version of an image into:
The app must handle Android EDIT
intents from ARK Navigator app while supporting cases 1 and 2 of the list above — this is the reason why we need the editor. I.e. if a user opens an image from ARK Navigator, the user must be able to save the edited version into the same folder containing original image or overwrite original image.
In cases 2-4 new name should be generated if the folder contains a file with the same name (always the case in 2).
This should be an external app, this way it's:
We can fork this project and take editor from there, or probably modify this one. But in order to integrate it with ARK Navigator external app needs to handle EDIT
intent properly, receiving path of the image being edited in it and having access to the folder containing the image.
See also: ARK-Builders/ARK-Navigator#84
Future work:
After a resource is changed, its id changes as well. We should port tags from older version to newer one. In case of overwriting the resource, we can do it using ARK-Builders/ARK-Navigator#40 since both versions share the same path. In case of saving into the same root folder, we can't link versions without help of the editor, so it should either send new path of the resource back into ARK Navigator or update tags storage and index using the library (ARK-Builders/ARK-Navigator#163).
When a user taps on bottom toolbar (semi-transparent), it hides. It is good for drawing, but during drawing [undo]
often is needed, so to access it, it is necessary to invoke toolbar again. Moving [undo]
button out of it, into fixed top bar, would make it much easier to use.
It would be nice to be able to pick any color from the image itself and use it for drawing. This should involve a button somewhere in color selecting dialog. When it was pressed, touching the image would set current color to be the color of touched pixel.
Video file can be open by ark-retouch
After video is opened we can see only thumbail
We can draw on it and save
After save we have .mp4 file with size of some kB, not usible
Similar to ARK-Builders/ARK-Navigator#154
This is our new shared component for picking a file/folder:
https://github.com/ARK-Builders/ark-filepicker
Step to reproduce the issue.
Result: Image is invisible
.
When an external app calls the editor, we should hide option to open another file because we are in the middle of bigger data flow. The calling side might expect some result from us which is not valid for different image.
I think we can do the same split build as in ARK Navigator.
Would be nice to allow user to draw with semi-transparent colors.
Two flavours of this bug:
Right now, the app quits immediately when [back]
event triggered. This is very annoying during drawing on devices with navigation gestures enabled instead of 3-buttons bar.
If user has unsaved changes the app must always confirm if they want to quit and whether changes must be saved.
Several issues should be resolved in single PR:
ktlint
: ARK-Builders/ARK-Retouch#6If we make user capable of growing image then they could do graphical notes using the app. Suppose the user has device supporting input with pen. The user can write on the image in drawing mode, but when they reach the edge they need more blank space to continue writing. We can grow space on scroll event or by pressing special floating button.
When user enters drawing mode, they should be capable to enlarge the image and move current focus to draw small details.
When a user performs several changes on the same picture, overwriting it several times — changes made before previous save are lost, only last changes are visible. Cleaning cache of ARK Retouch using Android settings solves it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.