<p dir="auto">Hey I know there are a lot of issue related but none on 4.6.1.</p>
<p dir="auto">The gif is really slow. I get it from direct file not an Url.</p>
<p dir="auto"><code class="notranslate">Glide.with(context).asGif().load(R.raw.update_needed).into(imageView);</code></p>
<p dir="auto">Some idea?</p>
<p dir="auto"><strong>Glide Version</strong>: 3.7.0</p>

<p dir="auto"><strong>Device/Android Version</strong>: 6.0</p>

<p dir="auto"><strong>Issue details / Repro steps / Use case background</strong>:</p>
<p dir="auto">dump the image when resource ready and check the quality that decode from resource &amp; cache</p>

<p dir="auto"><strong>Glide load line / <code class="notranslate">GlideModule</code> (if any) / list Adapter code (if any)</strong>:</p>
<div class="highlight highlight-source-java notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Glide.with(image.getContext()).load(uri).asBitmap().diskCacheStrategy(DiskCacheStrategy.RESULT)
.signature(key).listener(new GlideImageListener() {

                    @Override
                    public boolean onResourceReady(Bitmap resource, Uri uri,Target&lt;Bitmap&gt; target,boolean isFromMemoryCache, boolean isFirstResource) {
                        BitmapUtils.dumpBmp(resource, &quot;res_&quot; + System.currentTimeMillis());
                        return super.onResourceReady(resource, uri, target, isFromMemoryCache, isFirstResource);
                    }
                }).into(new GlideImageTarget(image));"><pre class="notranslate"><span class="pl-smi">Glide</span>.<span class="pl-en">with</span>(<span class="pl-s1">image</span>.<span class="pl-en">getContext</span>()).<span class="pl-en">load</span>(<span class="pl-s1">uri</span>).<span class="pl-en">asBitmap</span>().<span class="pl-en">diskCacheStrategy</span>(<span class="pl-smi">DiskCacheStrategy</span>.<span class="pl-c1">RESULT</span>)
.<span class="pl-en">signature</span>(<span class="pl-s1">key</span>).<span class="pl-en">listener</span>(<span class="pl-k">new</span> <span class="pl-smi">GlideImageListener</span>() {

                    <span class="pl-c1">@</span><span class="pl-c1">Override</span>
                    <span class="pl-k">public</span> <span class="pl-smi">boolean</span> <span class="pl-en">onResourceReady</span>(<span class="pl-smi">Bitmap</span> <span class="pl-s1">resource</span>, <span class="pl-smi">Uri</span> <span class="pl-s1">uri</span>,<span class="pl-smi">Target</span>&lt;<span class="pl-smi">Bitmap</span>&gt; <span class="pl-s1">target</span>,<span class="pl-smi">boolean</span> <span class="pl-s1">isFromMemoryCache</span>, <span class="pl-smi">boolean</span> <span class="pl-s1">isFirstResource</span>) {
                        <span class="pl-smi">BitmapUtils</span>.<span class="pl-en">dumpBmp</span>(<span class="pl-s1">resource</span>, <span class="pl-s">"res_"</span> + <span class="pl-smi">System</span>.<span class="pl-en">currentTimeMillis</span>());
                        <span class="pl-k">return</span> <span class="pl-en">super</span>.<span class="pl-en">onResourceReady</span>(<span class="pl-s1">resource</span>, <span class="pl-s1">uri</span>, <span class="pl-s1">target</span>, <span class="pl-s1">isFromMemoryCache</span>, <span class="pl-s1">isFirstResource</span>);
                    }
                }).<span class="pl-en">into</span>(<span class="pl-k">new</span> <span class="pl-smi">GlideImageTarget</span>(<span class="pl-s1">image</span>));</pre></div>
<p dir="auto">dump compressed bitmap to jpeg &amp; quality 100 and save the file.<br>
the resource bitmap and the cache are the same size(width&amp;height) ,but different file length!!<br>
and resource bitmap quality is better than cahce one , they are different !!!</p>
<p dir="auto">I don't know which part changed the image quality<br>
so I write new ImageDecoder&amp;ImageEncoder to test the part different , and still the same that save to cache before and decode from cache , the image quality had been changed.</p>
<div class="highlight highlight-source-java notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Glide.with(image.getContext()).load(uri).asBitmap().diskCacheStrategy(DiskCacheStrategy.RESULT).imageDecoder(new ImageDecoder(image.getContext())).encoder(new ImageEncoder())
.signature(key).listener(new GlideImageListener() {

                    @Override
                    public boolean onResourceReady(Bitmap resource, Uri uri,Target&lt;Bitmap&gt; target,boolean isFromMemoryCache, boolean isFirstResource) {
                        BitmapUtils.dumpBmp(resource, &quot;res_&quot; + System.currentTimeMillis());
                        return super.onResourceReady(resource, uri, target, isFromMemoryCache, isFirstResource);
                    }
                }).into(new GlideImageTarget(image));
"><pre class="notranslate"><span class="pl-smi">Glide</span>.<span class="pl-en">with</span>(<span class="pl-s1">image</span>.<span class="pl-en">getContext</span>()).<span class="pl-en">load</span>(<span class="pl-s1">uri</span>).<span class="pl-en">asBitmap</span>().<span class="pl-en">diskCacheStrategy</span>(<span class="pl-smi">DiskCacheStrategy</span>.<span class="pl-c1">RESULT</span>).<span class="pl-en">imageDecoder</span>(<span class="pl-k">new</span> <span class="pl-smi">ImageDecoder</span>(<span class="pl-s1">image</span>.<span class="pl-en">getContext</span>())).<span class="pl-en">encoder</span>(<span class="pl-k">new</span> <span class="pl-smi">ImageEncoder</span>())
.<span class="pl-en">signature</span>(<span class="pl-s1">key</span>).<span class="pl-en">listener</span>(<span class="pl-k">new</span> <span class="pl-smi">GlideImageListener</span>() {

                    <span class="pl-c1">@</span><span class="pl-c1">Override</span>
                    <span class="pl-k">public</span> <span class="pl-smi">boolean</span> <span class="pl-en">onResourceReady</span>(<span class="pl-smi">Bitmap</span> <span class="pl-s1">resource</span>, <span class="pl-smi">Uri</span> <span class="pl-s1">uri</span>,<span class="pl-smi">Target</span>&lt;<span class="pl-smi">Bitmap</span>&gt; <span class="pl-s1">target</span>,<span class="pl-smi">boolean</span> <span class="pl-s1">isFromMemoryCache</span>, <span class="pl-smi">boolean</span> <span class="pl-s1">isFirstResource</span>) {
                        <span class="pl-smi">BitmapUtils</span>.<span class="pl-en">dumpBmp</span>(<span class="pl-s1">resource</span>, <span class="pl-s">"res_"</span> + <span class="pl-smi">System</span>.<span class="pl-en">currentTimeMillis</span>());
                        <span class="pl-k">return</span> <span class="pl-en">super</span>.<span class="pl-en">onResourceReady</span>(<span class="pl-s1">resource</span>, <span class="pl-s1">uri</span>, <span class="pl-s1">target</span>, <span class="pl-s1">isFromMemoryCache</span>, <span class="pl-s1">isFirstResource</span>);
                    }
                }).<span class="pl-en">into</span>(<span class="pl-k">new</span> <span class="pl-smi">GlideImageTarget</span>(<span class="pl-s1">image</span>));</pre></div>
<p dir="auto">so can you help me to check this issue ?</p>