Autore Topic: Ritagliare immagine con selezionare  (Letto 1273 volte)

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Ritagliare immagine con selezionare
« il: 13 Febbraio 2013, 20:21:46 CET »
0
Ciao ragazzi,
ho un problemino...l'utente seleziona un'immagine dalla galleria e da quella foto soltanto una sezione come succede per esempio su whatssapp, con la differenza che il riquadro si possa ingrandire e restringere in proporzione.
Per quanto riguarda la selezione sono a posto...è il ritaglio che non mi viene :(

Qualcuno a qualche suggerimento??

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Ritagliare immagine con selezionare
« Risposta #1 il: 14 Febbraio 2013, 14:15:17 CET »
0
Il ritaglio (o "crop") non è proprio banalissimo.
In teoria c'è un componente com.android.camera.CropImage che fa questo lavoro, un esempio d'utilizzo lo puoi > vedere qui <
Il problema con quest'approccio è che non si tratta di un API ufficiale di google, quindi non è per niente detto che sia disponibile sul dispositivo (sugli android "puri" tipo nexus sicuramente si, ma su altre case è un'incognita... ad esempio alcuni modelli di HTC so per certo che non ce l'hanno).

Volendo impazzirci un pochino sopra puoi prendere il sorgente di questa funzionalità è inglobarla nella tua app, in modo da portartela dietro indipendentemente dalla versione android presente sul dispositivo.
Io ho fatto così.
I sorgenti del crop li puoi trovare in giro per la rete, personalmente io gli ho presi da > qui <

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Ritagliare immagine con selezionare
« Risposta #2 il: 22 Febbraio 2013, 10:05:11 CET »
0
Grazie mille Sakazaki, grazie ai link che mi hai postato sono riuscito a implementare il ritagli con selezione nella mia app :)
Il tutorial che ho seguito è questo http://www.londatiga.net/featured-articles/how-to-select-and-crop-image-on-android/.

L'unico problema (sono anchora alle prime armi con la programmazione android) i sorgenti non sono incorporati...riusciresti a spiegarmi come fare???

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
R: Ritagliare immagine con selezionare
« Risposta #3 il: 22 Febbraio 2013, 11:02:14 CET »
0
Cosa intendi con "i sorgenti non sono incorporati"?

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Ritagliare immagine con selezionare
« Risposta #4 il: 24 Febbraio 2013, 12:26:53 CET »
0
Faccio riferimento a quello che mi hai detto...

Citazione
Volendo impazzirci un pochino sopra puoi prendere il sorgente di questa funzionalità è inglobarla nella tua app, in modo da portartela dietro indipendentemente dalla versione android presente sul dispositivo.
Io ho fatto così.
I sorgenti del crop li puoi trovare in giro per la rete, personalmente io gli ho presi da > qui <

Un'altra cosa...ho avuto 6 arresti da quando ho pubblicato l'app...l'analisi dello stack mi riporta questo..
Codice (Java): [Seleziona]
Pagina 1:
java.lang.NullPointerException
at com.citazioni.CropOptionAdapter.getView(CropOptionAdapter.java:43)
at android.widget.AbsListView.obtainView(AbsListView.java:2214)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
at android.widget.ListView.onMeasure(ListView.java:1155)
at android.view.View.measure(View.java:12863)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12863)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12863)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at android.view.View.measure(View.java:12863)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at android.view.View.measure(View.java:12863)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2256)
at android.view.View.measure(View.java:12863)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1197)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2585)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)

Pagina 2:
java.lang.NullPointerException
at com.citazioni.CropOptionAdapter.getView(CropOptionAdapter.java:43)
at android.widget.AbsListView.obtainView(AbsListView.java:2457)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
at android.widget.ListView.onMeasure(ListView.java:1162)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5054)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5054)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5054)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5054)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5054)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2355)
at android.view.View.measure(View.java:15473)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1972)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1190)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1388)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4470)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
at dalvik.system.NativeStart.main(Native Method)

Pagina 3:
java.lang.NullPointerException
at com.citazioni.CropOptionAdapter.getView(CropOptionAdapter.java:43)
at android.widget.AbsListView.obtainView(AbsListView.java:1453)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
at android.widget.ListView.onMeasure(ListView.java:1127)
at android.view.View.measure(View.java:8313)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
at android.view.View.measure(View.java:8313)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
at com.android.internal.widget.WeightedLinearLayout.onMeasure(WeightedLinearLayout.java:60)
at android.view.View.measure(View.java:8313)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8313)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8313)
at android.view.ViewRoot.performTraversals(ViewRoot.java:842)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1862)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3684)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)

Pagina 4:
java.lang.NullPointerException
at com.citazioni.CropOptionAdapter.getView(CropOptionAdapter.java:43)
at android.widget.AbsListView.obtainView(AbsListView.java:2040)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
at android.widget.ListView.onMeasure(ListView.java:1155)
at android.view.View.measure(View.java:12881)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:676)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
at android.view.View.measure(View.java:12881)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:676)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
at android.view.View.measure(View.java:12881)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at android.view.View.measure(View.java:12881)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at android.view.View.measure(View.java:12881)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2111)
at android.view.View.measure(View.java:12881)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4441)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

Purtroppo non sò leggere questa cosa e non riesco a capire dove sia l'errore