📷 ➜ ▶️ Offline Image to Animation Maker
An open-source, cross-platform, offline app for Android, Linux, Windows, Mac & iOS (Mac & iOS apps are not built by us, but can be done using the documentation). Just upload an image & generate a sketch style animation video file in seconds or munites (depends on device) without an Internet connection.
Overview: The app uses KivyMD and Kivy mainly for the UI. The app uses
Numpy&OpenCVas the logic backbone which generates the video from an image.
🤔 Why would you choose our app? (Features)
👉 Generate White-board drawing style sketch animation just from an image.
👉 No internet connection is required, completely
Offline
.
👉 Available on Android, Windows & Linux. Can run on any OS using
Python
.
👉 No subscription, watermark, completely
open-source
.
👉 Configurable speed, frame rate & few other params to control the video lenght & speed.
👉 We can also choose whether we want to show the original image (colour) or the grayscale (with Gaussian blur) image at the end of the sketch & for how long (in number of seconds).
👉 Now, we can choose a
folder
to create multiple videos from multiple images (all images in the selected folder) in a single batch (queue) on
desktop
versions only.
💰 Sponsor Me
You can buy me a coffee via
this link
or tap on below image. Thank you 🙏.
📽️ Demo
You can play below Video or click this
Youtube Link
to see the demo. Please let me know in the comments, how do you feel about this App.
🖧 Our Scematic Architecture
To be added...
🧑💻 Quickstart Guide
📱 Download & Run the Android App
Get the app from
Google PlayStore
You can check also the Releases and downlaod the latest apk on your phone.
Requirements
-
Minimum
Android 9
Paths to use
-
You may need to use
Downloads,DCIM,Picturesor any subfolder under this folders to choose the source image. I will recommend to use a subfolder with less number of images (as preview might be slow on low-end devices). -
If you use the
Downloadbutton from the app, you can save the animation video in one of the mentioned folders:Downloads,Movies,Videosdue android file access restrictions onAndroid 11+.
💻 Download & Run the Windows or Linux App
Get the app from
Microsoft App Store
You can check also the
Releases
and downlaod the latest version of the app on your
Linux
or
Windows
platform. The Linux app has no extension, you may need to change the permission of the file to run it. The Windows app will have an
exe
extension, just double click & run it (You may need to create an exception for Antivirus if there is any detection).
🐍 Run with Python
-
Clone the repo
-
Run the application
Parameters to set
You may go with defaults & just change the speed. But, you can always do experiments & choose your best setup according to your image.
| Parameter | Description | Default Value | Suggestion |
|---|---|---|---|
| Video speed | The speed of the sketch animation | 10 | Take a higher speed for higher resolution image, on Android select 20 or above if your image is 720p or above |
| Frame rate | Frames per second (fps) | 25 | Go with 30 or lesser value |
| Object skip rate | The rate by which the drawing hand will be skipped on the actual image | 8 |
Should be less than
Background skip rate
if your image resolution is bigger than the hand
|
| Background skip rate | The rate of the background image skipping in the animation | 14 | You may use some bigger number if your image is very high resolution |
| Main image duration | The number of seconds to show the original image after the sketch is finished | 2 | Choice is yours |
Preferences
-
End Colour: IfON, the original image will be shown (for the number of seconds as you have given in the input) at the end (after sketch is finished). If it isOFF, a B&W sketch verson image will be shown at the end. Default: ON -
Hand on Video: IfON, the drawing hand will be present during the sketch. Turn this off if you do do not want the hand in your video. Default: ON -
1080p Max Resolution: IfON, the generated video will of 1080p max (orientation depends on image) if the image is higher than 1080p, this improves the performance. If you turn this off, the video can be upto 8K depending on the actual image resolution, not recommened for perfomance (don't turn this off on Android). Default: ON
Note: App is not storing the preferences permanently (works till the app is closed), default will be used after every launch.
📥 More open-source apps from us
You may check our other apps from our app list
🦾 Build your own App
The Kivy project has a great tool named
Buildozer
which can make mobile apps for
Android
&
iOS
📱 Build Android App
A Linux environment is recommended for the app development. If you are on Windows, you may use
WSL
or any
Virtual Machine
. As of now the
buildozer
tool works on Python version
3.11
at maximum. I am going to use Python
3.11
# add the python repository
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
# install all dependencies.
sudo apt install -y ant autoconf automake ccache cmake g++ gcc lbzip2 libffi-dev libltdl-dev libtool libssl-dev make openjdk-17-jdk patch pkg-config python3-dev python3-pip unzip wget zip git python3.11 python3.11-venv python3.11-dev
# optionally you may check the java installation with below commands
java -version
javac -version
# install python modules
git clone https://github.com/daslearning-org/image-to-animation-offline.git
cd image-to-animation-offline/kivy/
python3.11 -m venv .env # create python virtual environment
source .env/bin/activate
pip install -r req_android.txt
# build the android apk
buildozer android debug # this may take a good amount of time for the first time & will generate the apk in the bin directory
## build AAB for playstore
# generate a key
export APP_ANDROID_KEYSTORE_PASSWORD="yourpassword"
export APP_ANDROID_KEY_PASSWORD="yourpassword"
keytool -genkey -v -keystore your_key.jks -alias your_alias -keyalg RSA -keysize 2048 -validity 10000 -storepass $APP_ANDROID_KEYSTORE_PASSWORD -keypass $APP_ANDROID_KEYSTORE_PASSWORD -dname "CN=SomnathDas, OU=IT, O=DasLearning, L=Kolkata, ST=WB, C=IN" # this is one time activity for the app
# set the below in buildozer.spec
android.sign = True
android.keystore = /path/to/your_key.jks
android.key.alias = your_alias
android.release_artifact = aab
# then build the aab
buildozer -v android release
🖳 Build Computer Application (Windows / Linux / MacOS)
A
Python
virtual environment is recommended and please follow the same steps from above till the pip module installations (do not require buildozer for desktop apps). It builds a native app depending on the OS type i.e.
.exe
if you are running
PyInstaller
from a Windows machine. Build computer apps from
docker image
for any OS type.
# install pyinstaller
pip install pyinstaller
# generate the spec file <<OPTIONAL>>
pyinstaller --name "dlDesktop" --windowed --onefile main.py # optional as it is already created in the repo
# then update the spec file as needed
# then build your app which will be native to the OS i.e. Linux or Windows or MAC
pyinstaller dlDesktop.spec
Build Windows exe from Linux
-
Install Wine
# Add the Wine repository key sudo mkdir -pm755 /etc/apt/keyrings sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key # Add the Wine repository for your Linux Mint version # For Linux Mint 21.x (Vanessa, Virginia, Victoria - based on Ubuntu 22.04 Jammy Jellyfish) # Replace 'jammy' with your Ubuntu base codename if different (e.g., 'focal' for Mint 20.x) sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources # Update package lists sudo apt update # Install Wine (Stable branch is usually recommended) sudo apt install --install-recommends winehq-stable # If you need 32-bit support (highly recommended for Python/PyInstaller compatibility) # This command typically handles it, but if you encounter issues later, ensure 32-bit architecture is enabled: sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32 # This might be pulled by winehq-stable, but good to ensure -
Download Windows Python from official page and then install
-
Then run the development
cd kivy/ wine pip install pyinstaller wine pip install -r requirements.txt # Also install kivy-deps.sdl2, kivy-deps.glew, kivy-deps.angle explicitly if not pulled by Kivy/KivyMD wine pip install kivy-deps.sdl2 kivy-deps.glew kivy-deps.angle # Replace 'Python39' with your installed Python version in Wine wine pyinstaller dlDesktop.spec # exe will be in the dist folder
🐞 Issues
There can be few issues & some solutions around it.
Android Issues
-
Sometimes the apk might not get installed. You may enable
Developer Options>USB Debuggingand run below command with adb tool .