Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.android.util;
- import java.io.File;
- import java.io.IOException;
- import magick.ColorspaceType;
- import magick.ImageInfo;
- import magick.MagickImage;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.util.Log;
- import com.nostra13.universalimageloader.cache.disc.DiscCacheAware;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
- import com.nostra13.universalimageloader.core.decode.ImageDecodingInfo;
- public class MyImageDecoder extends BaseImageDecoder {
- private ImageInfo info;
- private MagickImage imageCMYK;
- @Override
- public Bitmap decode(ImageDecodingInfo decodingInfo)
- {
- Bitmap result = null;
- try {
- result = super.decode(decodingInfo);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //base decoder may have failed CMYK images - lets try our own and if it fails return null
- if(result == null)
- {
- Log.v("App", "MY DECODER IN USE");
- try
- {
- DiscCacheAware discCache = ImageLoader.getInstance().getDiscCache();
- File imageFile = discCache.get(decodingInfo.getImageUri());
- File cachedImageFile = ImageLoader.getInstance().getDiscCache().get(decodingInfo.getImageUri());
- if (!cachedImageFile.exists()) {
- Log.v("App", "FILE DOES NOT EXIST");
- return null;
- }
- //File test = new File(decodingInfo.getImageUri());
- info = new ImageInfo(imageFile.getAbsolutePath());
- imageCMYK = new MagickImage(info);
- if(imageCMYK.getColorspace() == ColorspaceType.CMYKColorspace)
- {
- Log.v("App", "Image is CMYK decode using My decoder");
- boolean imgConvertStatus = imageCMYK.transformRgbImage(ColorspaceType.CMYKColorspace);
- if(imgConvertStatus)
- {
- Log.v("App", "Image successfully decoded using My decoder");
- imageCMYK.setFileName(imageFile.getAbsolutePath());
- imageCMYK.writeImage(info);
- Log.v("App", "Loading saved image from file system as a Bitmap");
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inPreferredConfig = Bitmap.Config.ARGB_8888;
- Bitmap bitmap = BitmapFactory.decodeFile(decodingInfo.getImageUri(), decodingInfo.getDecodingOptions());
- Log.v("App", "Loaded bitmap");
- result = bitmap;
- }
- else
- {
- return null;
- }
- }
- }
- catch(Exception e)
- {
- return null;
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement