Android Image Editor Library, in this blog we feature a curated list of Top 5 image editor libraries for Android developers to help create a photo editor app.
Need some career advice or prepping for an Android developer interview? Hit me up on Topmate.io, and let's chat!
Android Image Editor Library
Effects Pro (Java)
A practical and easy-to-use Android application to apply several filters to an image at once.
Features
- Applying several filters
- Undoing filters one by one
- Maintaining maximum image quality
- Taking photos using camera or choosing from SD-Card
Filters
- Boost-Up Colors
- Brightness
- Color Depth
- Color Filter
- Contrast
- Emboss
- Flip and Rotation
- Gamma
- Gaussian Blur
- Grayscale
- Hue
- Invert
- Noise
- Saturation
- Sepia
- Sharpen
- Sketch
- Tint
- Vignette
PhotoEditor SDK (Java)
The PhotoEditor SDK is a powerful and multifaceted android image editor library tool which enables you to equip your Android application with high-performant photo editing capabilities. The PhotoEditor SDK is written in Java and can easily be customized to entirely blend with your CI and provide your users with the exact feature set your use-case requires.
The SDK ships with a large variety of filters, covering all state of the art style- and mood settings that can be previewed in real-time. Unlike other apps that allow a live preview of filters, the PhotoEditor SDK even provides a live preview when using high-resolution images.
All operations are non-destructive which allows for fast and uncomplicated revision of the creatives at any given time and creates an intuitive and creative workflow for your users. Please see Features for a detailed list of the photo editing tools included in the PhotoEditor SDK.
Features
- Over 60 handcrafted Filters covering all state of the art style- and mood settings to choose from.
- Design custom filters in Photoshop and other apps: The API of the PhotoEditor SDK enables you to expand the filter library with your own set of custom filters to define a unique visual language. Custom filters can easily be created by anyone using LUTs (Lookup Tables) from popular apps like Photoshop, GIMP or Lightroom. Design your filter and apply it onto the provided identity image. That will ‘record’ the filter response, now simply save it and add it as a new filter. Done.
- An Overlay Tool that can be used to create neat lighting effects like lens flare or bokeh but also to furnish pictures with textures like crumpled paper or plaster. You can easily expand the library by importing your own set of overlay assets.
- An Adjustment section that holds both essential and advanced photo editing features like brightness, contrast, saturation, clarity etc. that help tweak and fine tune images to create stunning creatives.
- A Transform section that unifies cropping, flipping and rotation in one feature.
- The robust Text Feature provides all necessary functions for quickly adding text to any picture or creative. The corresponding font library can easily be exchanged, reduced, or expanded.
- A categorized Sticker library whose UI is optimized for exploration and discovery. You can easily complement the library with your own custom sticker packages.
- A Frame Tool that works with any given photo size or ratio.
- A high performant Brush Engine optimized for touch screen that supports different brush strokes.
- A Photo Roll equipped with a wide range of stock photography and templates with presorted categories. The API allows for easy expansion, reduction and rearrangement of the assets.
- A clean and intuitive UI that ensures an unhindered flow of creativity and a seamless experience while composing creatives. The UI is designed to be customized to completely match your CI and blend with your app.
- You can strip out every feature you deem unnecessary to provide your users with the exact feature set your use case requires.
- Android API Level 16+ Covers nearly 99% of all Android devices with touchscreen.
- Fast image export up to 4294 MegaPixel
- Generic camera support for most Android phones.
- Tablet support: The PhotoEditor SDK uses auto layout for its views and adapts to each screen size.
- Non/destructive features and effects: Quickly revise, redo or even discard your work.
To implement this library in your Android Studio project, add the following line of code to your build.gradle (app) dependencies:
// Add the PESDK repository and plugin dependency
buildscript {
repositories {
jcenter()
google()
maven { url "https://artifactory.img.ly/artifactory/imgly" }
}
dependencies {
classpath 'ly.img.android.pesdk:PESDKPlugin:6.4.2'
}
}
Photo Editor (Java)
An Android image Editor library, Photo Editor with simple, easy support for image editing using Paints, Text, Filters, Emoji and Sticker like stories.
Features
- Drawing on the image with the option to change its Brush’s Color, Size, Opacity, and Erasing.
- Apply Filter Effect on the image using MediaEffect
- Adding/Editing Text with option to change its Color with Custom Fonts.
- Adding Emoji with Custom Emoji Fonts.
- Adding Images/Stickers
- Pinch to Scale and Rotate views.
- Undo and Redo for Brush and Views.
- Deleting Views
- Saving Photo after editing.
To start with this, we need to simply add the dependencies in the gradle file of our app module like this:
dependencies {
implementation 'ja.burhanrashid52:photoeditor:0.3.3'
}
GPUImage for Android (Java & Kotlin)
The Goal of this Android image editor library is to have something as similar to GPUImage as possible. Vertex and fragment shaders are exactly the same. That way it makes it easier to port filters from GPUImage iOS to Android.
To implement this library in your Android Studio project, add the following line of code to your build.gradle (app) dependencies:
repositories {
jcenter()
}
dependencies {
implementation 'jp.co.cyberagent.android:gpuimage:2.x.x'
}
Sample Code:
Java:
@Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); Uri imageUri = ...; gpuImage = new GPUImage(this); gpuImage.setGLSurfaceView((GLSurfaceView) findViewById(R.id.surfaceView)); gpuImage.setImage(imageUri); // this loads image on the current thread, should be run in a thread gpuImage.setFilter(new GPUImageSepiaFilter()); // Later when image should be saved saved: gpuImage.saveToPictures("GPUImage", "ImageWithFilter.jpg", null); }
Kotlin:
public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_gallery) val imageUri: Uri = ... gpuImage = GPUImage(this) gpuImage.setGLSurfaceView(findViewById<GLSurfaceView>(R.id.surfaceView)) gpuImage.setImage(imageUri) // this loads image on the current thread, should be run in a thread gpuImage.setFilter(GPUImageSepiaFilter()) // Later when image should be saved saved: gpuImage.saveToPictures("GPUImage", "ImageWithFilter.jpg", null) }
Using GPUImageView
<jp.co.cyberagent.android.gpuimage.GPUImageView android:id="@+id/gpuimageview" android:layout_width="match_parent" android:layout_height="match_parent" app:gpuimage_show_loading="false" app:gpuimage_surface_type="texture_view" /> <!-- surface_view or texture_view -->
Java:
@Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); Uri imageUri = ...; gpuImageView = findViewById(R.id.gpuimageview); gpuImageView.setImage(imageUri); // this loads image on the current thread, should be run in a thread gpuImageView.setFilter(new GPUImageSepiaFilter()); // Later when image should be saved saved: gpuImageView.saveToPictures("GPUImage", "ImageWithFilter.jpg", null); }
Kotlin:
public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_gallery) val imageUri: Uri = ... gpuImageView = findViewById<GPUImageView>(R.id.gpuimageview) gpuImageView.setImage(imageUri) // this loads image on the current thread, should be run in a thread gpuImageView.setFilter(GPUImageSepiaFilter()) // Later when image should be saved saved: gpuImageView.saveToPictures("GPUImage", "ImageWithFilter.jpg", null) }
Android Fast Image Processing Library
Image processing on the android is often a difficult task. Camera and video input editing are complex to set up and often require 3rd party libraries written in C++. The goal of this project is helping with this problem by providing a framework similar to Brad Larson’s GPUImage but on Android. Unlike Brad Larson’s GPUImage, this framework does not use multiple opengl contexts, and the image processing multi-threaded; however, it does take advantage of opengl shaders to provide a speed up in image processing.
Requirements
The whole Android image editor library is written targeted to Android 2.2 (API 8) and no 3rd party libraries with the exception the video input and output and Camera input. The video and camera input require android 4+ (API 14+) because it uses SurfaceTexture. The video output takes advantage of JavaCV to record the video. From my tests, the video recording is not working on android 4+ devices but is working on android 2.2.