Autore Topic: bitmap modificata con multitouch  (Letto 647 volte)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
bitmap modificata con multitouch
« il: 07 Marzo 2012, 14:27:45 CET »
0
sto disperatamente cercando di modificare una foto utilizzando photosortr...ma senza alcun risultato :(
il codice da cui sono partito è questo:
http://code.google.com/p/android-multitouch-controller/source/browse/trunk/demo/MTPhotoSortr/src/org/metalev/multitouch/photosortr/PhotoSorterView.java?r=12
questo codice funziona perfettamente se si utilizza una o piuimmagini prese dalle risorse..come si vede in questa riga:
private static final int[] IMAGES = { R.drawable.m74hubble, R.drawable.catarina, R.drawable.tahiti,R.drawable.sunset, R.drawable.lake }; 

il mio problema è che devo usare il multitouch su una foto appena scattata e quindi bitmap..ho provato in mille modi a modificare il codice per poter inserire la bitma, ma non ci sono riuscito..mi potete dire come fare per poter usare il multitouch su una bitmap appena scattata?
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:bitmap modificata con multitouch
« Risposta #1 il: 07 Marzo 2012, 15:02:03 CET »
0
Dovrebbe essere semplice:

http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html

Qualcosa tipo:

Codice (Java): [Seleziona]
Drawable pippo = new BitmapDrawable(file);
 ;-)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:bitmap modificata con multitouch
« Risposta #2 il: 07 Marzo 2012, 15:49:20 CET »
0
tnx per la risposta, anche io avevo trasformato la bitmap in drawable, il problema è che poi non riesco a usare il multitouch su questa immagine..
mi sfugge il modo per poter inserire il multitouch in questo bitmap (o drawable)..
riesco a farlo funzionare solo sulle immagini che prendo nell'int[]IMAGES e non riesco ad aggiungere quella scattata :(
se fosse possibile inserire nelle Resources questo nuovo drawable,sarebbe tutto risolto e mi basterebbe richiamarlo on R.drawable.d ...ma non ho idea se si possa fare e come..
aggiungo un po di codice, che magari sbaglio proprio il concetto:
file xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">

<crop.photosortr.PhotoSortrView
                android:id="@+id/fotoview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"            
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"/>
    <ImageView
       android:id="@+id/cornice"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"/>


    <Button
       android:id="@+id/btn_crop"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/textView1"
       android:text="Select image" android:layout_alignParentBottom="true"/>
</RelativeLayout>
questo è il java dopo aver scattato la foto:
Codice (Java): [Seleziona]
                           d =new BitmapDrawable(getResources(),photo);
                            mImageView.setImageDrawable(d);
// in questo modo mette la foto in un imageview, ma naturalmente non è ridimensionabile
nell'onResume ho messo questo:
Codice (Java): [Seleziona]
      PhotoSortrView  photoSorter = (PhotoSortrView)findViewById(R.id.fotoview);
        photoSorter.loadImages(this);
« Ultima modifica: 07 Marzo 2012, 16:23:58 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:bitmap modificata con multitouch
« Risposta #3 il: 07 Marzo 2012, 18:24:03 CET »
+1
Nel sorgente che hai linkato loadImages carica le drawable nell'array che contiene le risorse.

Quindi se tu lo chiami con this non dovrebbe caricare la bitmap.

Credo che una bitmapdrawable sia castabile a drawable. Quindi secondo me dovresti fare una cosa del tipo:

1- modificare la classe Img aggiungendo un costruttore che invece di prendere id e il resources prende solo il resources
2- aggiungere un metodo load alla classe Img che prende resources E il drawable e invece di caricare in this.drawable il drawable della resource/this.resId copia pari pari il drawable che gli hai passato.

A quel punto ti vai a modificare l'altra classe, PhotoSorterView.

In quella classe crei un nuovo metodo addImage(Context,Drawable) in cui tu passi this come adesso e il drawable e la chiami DOPO aver fatto chiamato loadImages.

In questo metodo fai:

1- crei un nuovo oggetto Img e lo aggiungi alla lista mImages usando il nuovo costruttore new Img(res);
Img pippo = new Img(IMAGES, res);
mImages.add(pippo);
2- prendi pippo e gli carichi il tuo drawable
pippo.load(res,drawable);

A quel punto dovresti avere il tuo drawable a disposizione.... se ho capito bene cosa vuoi fare.

 :-)

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:bitmap modificata con multitouch
« Risposta #4 il: 07 Marzo 2012, 21:29:45 CET »
0
Uhm...sembra fattibile..domani pomeriggio provo, se mi blocco mi rivedi qua ;)
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!