Używam przesuwania, aby wyodrębnić bitmapę z pamięci podręcznej i zapisać ją w innym miejscu. Odpowiednia funkcja poniżej (oparta na tym post :) nie uruchamia ekstrakcji. W rzeczywistości linia dziennika "Log.d (TAG," O, aby rozpocząć ekstrakcję ");" poniżej nigdy się nie uruchamia.Ekstrakcja obrazu poślizgowego
Jakieś pomysły na pytanie, dlaczego prosta funkcja docelowa nigdy nie zostanie wywołana?
public byte[] extractImageFromCache(Context context, String pictureURL) {
byte[] byteArray = new byte[0];
if (context != null && pictureURL != null && !pictureURL.isEmpty()) {
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Glide.with(context)
.load(pictureURL)
.asBitmap()
.toBytes()
.diskCacheStrategy(DiskCacheStrategy.SOURCE) // Load the original hires image
.into(new SimpleTarget<byte[]>() {
@Override public void onResourceReady(final byte[] resource, GlideAnimation<? super byte[]> glideAnimation) {
Log.d(TAG, "About to start extraction");
new AsyncTask<Void, Void, Void>() {
@Override protected Void doInBackground(Void... params) {
Log.d(TAG, "Start extraction");
try {
Log.d(TAG, "Image bytes len: " + resource.length);
byteArrayOutputStream.write(resource);
byteArrayOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
Log.i(TAG, "Unable to load image: " + pictureURL);
e.printStackTrace();
}
return null;
}
}.execute();
}
});
Log.d(TAG, String.format("Got image bytes: %d for %s", byteArrayOutputStream.size(), pictureURL));
return byteArrayOutputStream.toByteArray();
}
return null;
}
Czy możesz opublikować logcat? – azizbekian
Gdzie nazywasz tę funkcję? – rom4ek
Wzmianka o wersji Glide, próbowałem twojego kodu i działa idealnie w 'glide: 3.7.0' – Maddy