Android Open Source - subsampling-scale-image-view Rapid Image Region Decoder






From Project

Back to project page subsampling-scale-image-view.

License

The source code is released under:

Apache License

If you think the Android project subsampling-scale-image-view listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.davemorrissey.labs.subscaleview.sample.imagedisplay.decoders;
/* w w w .  j a  va2s . c o  m*/
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.net.Uri;

import com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder;

import rapid.decoder.BitmapDecoder;

/**
 * A very simple implementation of {@link com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder}
 * using the RapidDecoder library (https://github.com/suckgamony/RapidDecoder). For PNGs, this can
 * give more reliable decoding and better performance. For JPGs, it is slower and can run out of
 * memory with large images, but has better support for grayscale and CMYK images.
 *
 * This is an incomplete and untested implementation provided as an example only.
 */
public class RapidImageRegionDecoder implements ImageRegionDecoder {

    private BitmapDecoder decoder;

    @Override
    public Point init(Context context, Uri uri) throws Exception {
        decoder = BitmapDecoder.from(context, uri);
        decoder.useBuiltInDecoder(true);
        return new Point(decoder.sourceWidth(), decoder.sourceHeight());
    }

    @Override
    public synchronized Bitmap decodeRegion(Rect sRect, int sampleSize) {
        try {
            return decoder.reset().region(sRect).scale(sRect.width()/sampleSize, sRect.height()/sampleSize).decode();
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public boolean isReady() {
        return decoder != null;
    }

    @Override
    public void recycle() {
        BitmapDecoder.destroyMemoryCache();
        BitmapDecoder.destroyDiskCache();
        decoder.reset();
        decoder = null;
    }
}




Java Source Code List

com.davemorrissey.labs.subscaleview.ImageViewState.java
com.davemorrissey.labs.subscaleview.ScaleImageView.java
com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.java
com.davemorrissey.labs.subscaleview.decoder.ImageDecoder.java
com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder.java
com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder.java
com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder.java
com.davemorrissey.labs.subscaleview.sample.MainActivity.java
com.davemorrissey.labs.subscaleview.sample.SampleActivity.java
com.davemorrissey.labs.subscaleview.sample.animation.AnimationActivity.java
com.davemorrissey.labs.subscaleview.sample.basicfeatures.BasicFeaturesActivity.java
com.davemorrissey.labs.subscaleview.sample.configuration.ConfigurationActivity.java
com.davemorrissey.labs.subscaleview.sample.eventhandling.EventHandlingActivity.java
com.davemorrissey.labs.subscaleview.sample.eventhandlingadvanced.AdvancedEventHandlingActivity.java
com.davemorrissey.labs.subscaleview.sample.extension.ExtensionActivity.java
com.davemorrissey.labs.subscaleview.sample.extension.ExtensionCircleFragment.java
com.davemorrissey.labs.subscaleview.sample.extension.ExtensionFreehandFragment.java
com.davemorrissey.labs.subscaleview.sample.extension.ExtensionPinFragment.java
com.davemorrissey.labs.subscaleview.sample.extension.views.CircleView.java
com.davemorrissey.labs.subscaleview.sample.extension.views.FreehandView.java
com.davemorrissey.labs.subscaleview.sample.extension.views.PinView.java
com.davemorrissey.labs.subscaleview.sample.imagedisplay.ImageDisplayActivity.java
com.davemorrissey.labs.subscaleview.sample.imagedisplay.ImageDisplayLargeFragment.java
com.davemorrissey.labs.subscaleview.sample.imagedisplay.ImageDisplayRotateFragment.java
com.davemorrissey.labs.subscaleview.sample.imagedisplay.decoders.RapidImageDecoder.java
com.davemorrissey.labs.subscaleview.sample.imagedisplay.decoders.RapidImageRegionDecoder.java
com.davemorrissey.labs.subscaleview.sample.viewpager.ViewPagerActivity.java
com.davemorrissey.labs.subscaleview.sample.viewpager.ViewPagerFragment.java