1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Bild maskieren und kopieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von manu, 12.10.2011.

  1. manu, 12.10.2011 #1
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Guten Abend,
    ich bräuchte euren technischen Rat und hoffe mir kann jemand helfen.

    Ich habe ein großes Bild und ein kleines Bild, dass meine Maske ist (nicht symmetrisch etc.). Nun möchte ich die Maske auf das große Bild legen und nur diesen Bereich auf ein anderes Bild kopieren.

    Wie mache ich das mit Java?

    Vielen Dank für eure Tipps.



    Gruß Manu
     
  2. Unicate, 13.10.2011 #2
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Also das einfachste (aber auch nicht schnellste) wird sein, wenn du dein Originalbild (nicht die Maske) Pixel für Pixel in ein neues Bild kopierst und befor du einen Pixel kopierst prüfst ob dieser in der Maske liegt oder nicht. Wenn nicht zeichnest du einen transparenten Pixel rein.

    Danach solltest du ein Bild haben, welches nur Pixel enthält, welche in der Maske liegen. Das kannst du dann auf ein beliebiges anderes Bild kopieren.

    Wichtig wird warscheinlich sein, das du die Seitenverhältnisse des Bildes und der Maske beachtest. Falls diese sowieso schon übereinstimmen ist das kein Problem, aber wenn sie unterschiedlich sind ist die Abfrage ob der Pixel in der Maske liegt oder nicht noch mit einer Anpassung zu berechnen.

    Außerdem dürfen die Bilder nicht allzu groß sein. Sonst droht der allseits beliebte OutOfMemoryError ^^

    PS: Für solche Arten von Pixelschubsereien lohnt sich das auch mal das ins C mit dem NDK auszulagern. Also je nach dem wie dringend das feature ist. Sowas ist um ein vielfaches schneller (Ja, das hab ich getestet).
     
    Zuletzt bearbeitet: 13.10.2011
  3. manu, 13.10.2011 #3
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Danke für den Tipp. Daran hatte ich auch schon gedacht. Aber die Performance ist viel zu schlecht. Ich bräuchte eine Lösung, die möglichst in Echtzeit funktioniert.
     
  4. Unicate, 13.10.2011 #4
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Dann bleibt dir nur das NDK, denke ich.
     

Diese Seite empfehlen