2015-08-22 20 views
5

Sto cercando di caricare le immagini dal percorso della telecamera nella GridView con l'aiuto di Picasso 2.5.2Picasso caricamento delle immagini

stoccaggio/emulato/0/DCIM/Camera/IMG_20150822_133220.jpg qui è il percorso.

Inoltre ho provato la soluzione fornita per il problema in Github repo di picasso. Ma non risolve il mio problema.

Ho provato con Trasformazione di picasso, ma le immagini non si caricano dal percorso della fotocamera.

Ho provato questo

File imageFile = new File(data.path); 
Picasso.with(mContext) 
    .load(imageFile) 
    .placeholder(R.drawable.default_error) 
    .error(R.drawable.default_error) 
    .resize(mItemSize, mItemSize) 
    .centerCrop() 
    .into(image); 
+0

ti invitiamo a mostrare il codice e se c'è un errore nel logcat? –

+0

@ Miriana Itani: Domanda aggiornata. Ho anche provato con uri, stringpath ed entrambi con "file: ///" come prefisso, ma non funzionante. Ci sono attaccato –

+0

Qual è il telefono utilizzato con quale software? –

risposta

0

È necessario passare un URL al metodo load().

File imageFile = new File(data.path); 

try{ 
     String url = imageFile.toURI().toURL().toString(); 
     Picasso.with(mContext) 
       .load(url) 
       .placeholder(R.drawable.default_error) 
       .error(R.drawable.default_error) 
       .resize(mItemSize, mItemSize) 
       .centerCrop() 
       .into(image); 
    }catch (MalformedURLException exeption){ 
     exeption.printStackTrace(); 
    } 
+0

Siamo spiacenti, questo non funziona –

0

Non utilizzare percorsi hardcoded per accedere ai contenuti della scheda SD - non sono universale tra dispositivi.

Usa .getExternalStoragePublicDirectory() e il corretto a due parametri File costruttore invece:

File f = new File(
     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), 
     "Camera/IMG_20150822_133220.jpg"); 
Picasso.with(mContext).load(f)./* ..; 

UPD Oh in realtà, a parte questo, hanno an open bug che sembra correlato, qualcuno dice che hanno lavorato intorno al problema utilizzando assoluto percorso, quindi prova

Picasso.with(context).load(new File(data.path).getAbsolutePath())... 
+0

Non è difficile codificato. Ti ho dato il percorso che sto ottenendo durante il debug. –

+0

Trovato qualcosa, dai un'occhiata all'aggiornamento nella mia risposta –

+0

Barstov. Spiacente, con Absolutepath non funziona ancora. –

0

Ho avuto un problema simile ora e questo è il modo in cui l'ho risolto. Sto cercando di prendere uno screenshot dello schermo del mio telefono e poi ho salvato giù come un file jpg in questo filepath:

filepath: /data/data/com.example.simon.myapp/app_report/report.jpg 

Tuttavia, Picasso non stava caricando questo a tutti - è stato appena mi dà un vuoto schermo.

Così poi quando ho preso lo screenshot, ho deciso di rimuovere il .jpg dal nome del file in modo che il percorso del file assomiglia a questo:

filepath: /data/data/com.example.simon.myapp/app_report/report 

Ho quindi utilizzato il seguente codice per accedere e visualizzare il mio screenshot senza ulteriori problemi.

ContextWrapper cw = new ContextWrapper(context); 
    File directory = cw.getDir("report", Context.MODE_PRIVATE); 
    file = new File(directory, "/report"); 
    Log.e("filepath", file.getPath()); 
    Picasso.with(context).load(file).memoryPolicy(MemoryPolicy.NO_CACHE).into(screenshot); 

So che sarà necessario per ottenere l'estensione del file jpg ad un certo stadio futuro, quindi se avete bisogno di ottenere il "report.jpg", è sufficiente rinominare il file con questo metodo:

android, How to rename a file?

private boolean rename(File from, File to) { 
    return from.getParentFile().exists() && from.exists() && from.renameTo(to); 
} 
Problemi correlati