Как загрузить изображение с SD-карты с помощью библиотеки Picasso

Мне нужно загрузить изображения с карты Sd в gridview. Для эффективности я использую Picasso Library

Picasso.with(activity).load(images.get(position).getDataPath())
            .resize(96, 96).centerCrop().into(viewHolder.image);

Я использовал следующий код в адаптере. к сожалению, я не вижу никаких изображений поэтому, пожалуйста, можете помочь кому-нибудь.

Примечание А также кто-нибудь может предложить любую эффективную библиотеку загрузки изображений для загрузки изображений с SD-карты.

Требование Я не загружаю изображение каждый раз при прокрутке. Если он уже загружен, не загружайте изображение при прокрутке

Ответы

Ответ 1

Чтобы загрузить файл, вам необходимо сначала преобразовать его в uri

Uri uri = Uri.fromFile(new File(images.get(position).getDataPath()));

Picasso.with(activity).load(uri)
            .resize(96, 96).centerCrop().into(viewHolder.image);

Требование Я не загружаю изображение каждый раз при прокрутке. Если оно уже загружен, не загружайте изображение при прокрутке

  • Пикассо отлично подходит для этого

Ответ 2

В версии 2.5.2 Picasso вам необходимо передать файл как аргумент для метода загрузки, поэтому изображение можно загрузить как:

Picasso.with(context).load(new File(images.get(position).getDataPath()))
    .resize(96, 96).centerCrop().into(viewHolder.image);

Ответ 3

Я не хотел создавать new File, потому что если путь уже был получен из существующего файла, нет необходимости в новом объекте (хотите увидеть уже существующее изображение на устройстве).

Согласно документам Пикассо, вы должны сделать что-то вроде этого: file:///android_asset/DvpvklR.png

Итак, у меня было: /storage/sdcard/Pictures/findyoursport/yoursport_1482358052384.jpeg

Prepending: file:// сделал трюк