Autore Topic: Errore ritaglio immagine bitmap solo su alcuni dispositivi  (Letto 624 volte)

Offline Gambarenerd

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • GambareNerd
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Mint
Errore ritaglio immagine bitmap solo su alcuni dispositivi
« il: 24 Aprile 2014, 10:47:03 CEST »
0
Salve a tutti ragazzi, da giorni ho uno strano problema che non riesco proprio a risolvere.
Sto realizzando una semplice applicazione per la gestione degli sfondi ed ho la necessità di ritagliare una immagine bitmap con delle dimensioni determinate.
Per realizzare ciò ho utlizzato la seguente funzione:
Codice (Java): [Seleziona]
Bitmap resizedbitmap=Bitmap.createBitmap(bmp,0,0, 1500, 1500);Premetto che l'immagine originale (bmp) ha una risoluzione di 1920x2160, quindi nel ritagliare una quadrato di 1500x1500 non dovrebbe creare nessun problema, ed infatti se testo il codice sul mio Nexus 5 va tutto bene.
Il problema si riscontra quando testo lo stesso identico codice su un tablet (nello specifico Nexus 7) a quel punto mi genera il seguente errore:
Codice (Java): [Seleziona]
04-24 10:42:15.709: E/AndroidRuntime(5449): java.lang.IllegalArgumentException: x + width must be <= bitmap.width()come se l'immagine ritagliata fosse più grande dell'immagine originale, ma così non è!
Altra cosa che no capisco come è possibile che su un dispositivo fili tutto liscio mentre su un altro mi crea problemi?
Sono scemo io o sono scemi loro? (nel 90% dei casi sono scemo io)

Grazie a tutti per la disponibilità.

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #1 il: 24 Aprile 2014, 12:23:13 CEST »
0
Teoricamente su tutti i dispositivi android potresti avere un problema diverso (sono più di 5mila secondo PlayStore)...

In questo caso, il problema secondo me è dovuto alla risoluzione del tablet... che è inferiore a quella del N5.

android - createBitmap --- java.lang.IllegalArgumentException: x must be &lt; bitmap.width() - Stack Overflow

Questa è la risposta al tuo problema ;)

Offline Gambarenerd

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • GambareNerd
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Mint
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #2 il: 24 Aprile 2014, 14:04:19 CEST »
0
Ti ringrazio adesso mi leggo il link che mi hai inviato...ma a naso risulta strano lo stesso.
La risoluzione del tablet potrebbe creare problemi se io tentassi di impostare l'immagine come sfondo invece mi crea problemi semplicemente ritagliandola.
Inoltre la risoluzione dello schermo del tablet è superiore all'immagine originale e quindi l'area ritagliata non dovrebbe creare problemi...ma così non è quindi il problema da qualche parte deve stare  :-(

Post unito: 24 Aprile 2014, 14:16:37 CEST
Niente da fare avevo già letto questo post ma non risolve il mio problema. Le mie coordinate di partenza per il ritaglio sono (0,0) quindi l'area che vado effettivamente a ritagliare è un quadrato di 1500x1500, e l'unica cosa certa è che 1500 è minore di 2160. Quindi l'errore che mi genera risulta abbastanza strano.
« Ultima modifica: 24 Aprile 2014, 14:16:37 CEST da Gambarenerd, Reason: Merged DoublePost »

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #3 il: 24 Aprile 2014, 14:46:37 CEST »
0
Prova a diminuire a 200x200 vedi se funziona.

Offline Gambarenerd

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • GambareNerd
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Mint
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #4 il: 24 Aprile 2014, 15:07:15 CEST »
0
Ho fatto varie prove funziona fino a 1440x1280. Questi numeri non mi suggeriscono nulla ma il loro rapporto è lo stesso di 2160x1920 (la dimensione originale dell'immagine) ovvero 1.125 il che vuol dire che le proporzioni sono identiche.
Se aumento anche di un solo pixel mi da problemi, se diminuisco no.

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #5 il: 24 Aprile 2014, 15:21:46 CEST »
0
Io resto convinto che sia un problema di risoluzione del dispositivo, e sono altrettanto convinto che su di un qualche device differente dal N5 o Samsung S4 che hanno una risoluzione full HD tu abbia lo stesso problema.

Offline Gambarenerd

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • GambareNerd
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Mint
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #6 il: 24 Aprile 2014, 15:26:18 CEST »
0
Molto probabilmente è come dici tu, io avevo pensato a qualche cosa legato ai dpi dello schermo...ma resta il fatto che è un comportamento non proprio corretto. La funzione che utilizzo per fare il crop dell'immagine dovrebbe essere slegata dal contesto.
Comunque grazie per l'interessamento al problema.

Offline Gambarenerd

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • GambareNerd
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Mint
Re:Errore ritaglio immagine bitmap solo su alcuni dispositivi
« Risposta #7 il: 28 Aprile 2014, 12:47:01 CEST »
0
Ho ristretto ulteriormente il problema, non è createBitmap() che crea casini ma il tablet stesso (Nexus 7) che non riconosce le dimensioni reali dell'immagine bitmap. Ne ho provate altre e mi restituisce sempre delle dimensioni minori rispetto alle originali. Nessuno ne sa nulla?  o_O

Post unito: 28 Aprile 2014, 13:52:29 CEST
Ok ho risolto. Non inserivo nella corretta cartella (res-drawable) l'immagine da analizzare, in questo modo prendeva l'immagine base e la riduceva di risoluzione in automatico sfalsando le dimensioni originali.
« Ultima modifica: 28 Aprile 2014, 13:52:29 CEST da Gambarenerd, Reason: Merged DoublePost »