Handle Large Size Images in Phimpme
Phimpme is an image app which provides custom camera, sharing features along with a well-featured gallery section. In gallery, it allows users to view local images. Right now we are using Glide to load images in the gallery, it is working fine for small size images it lags a bit when it comes to handling the high quality large images in the app. So in this post, I will explaining how to handle large size images without lagging or without taking much time. To solve this problem I am using android universal image loader library which is very light when compared to glide.
Step – 1
First step is to include the dependency in the phimpme project and it can be done by the following way
dependencies { compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4' }
Step-2
After this create an Android universal image loader instance. We can create imageloader instance in our application class if we want to use the image loader globally.
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this).memoryCacheExtraOptions(480, 800).defaultDisplayImageOptions(defaultOptions) .diskCacheExtraOptions(480, 800, null).threadPoolSize(3) .threadPriority(Thread.NORM_PRIORITY - 2) .tasksProcessingOrder(QueueProcessingType.FIFO) .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(MAXMEMONRY / 5)) .diskCache(new UnlimitedDiskCache(cacheDir)) .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default .imageDownloader(new BaseImageDownloader(this)) // default .imageDecoder(new BaseImageDecoder(false)) // default .defaultDisplayImageOptions(DisplayImageOptions.createSimple()).build(); this.imageLoader = ImageLoader.getInstance(); imageLoader.init(config);
Add the above code in the application class.
Step-3
Now our image loader instance is created now we can load an image easily. But to avoid the out of memory error and large image size error we can set many options to an image loader. In options we can set maximum memory allowed to image loader, maximum resolution and set particular architecture, it can be done in following ways.
Step-4
File cacheDir = com.nostra13.universalimageloader.utils.StorageUtils.getCacheDirectory(this); int MAXMEMONRY = (int) (Runtime.getRuntime().maxMemory());
To load an image using universal image loader just pass the URI of an image and to load write the below code.
Now the time is to load an image from local storage. We can load images from local storage, drawable, assets easily.
ImageLoader imageLoader = ((MyApplication)getApplicationContext()).getImageLoader(); imageLoader.displayImage(imageUri, imageView);
This is how I handled large size image in Phimpme.
Large Image in Phimpme
References :
- Universal Image Loader Library : https://github.com/nostra13/Android-Universal-Image-Loader
- Another blog: http://stacktips.com/tutorials/android/universal-image-loader-library-in-android
- Power of universal image view loader : https://medium.com/@ssaurel/enjoy-the-power-of-universal-image-loader-to-load-easily-your-images-on-android-3b36aa8a3161
You must be logged in to post a comment.