2012-11-01 7 views
11

Ich entwickle eine Android-App, die Gammakorrektur eines im Telefon gespeicherten Bildes durchführen kann. Meine Aktivität kann den Bildspeicherort abrufen, aber ich kann die Klassen BufferedImage und ImageIO in meiner Anwendung nicht verwenden.Verwendung der BufferedImage- und ImageIO-Klassen in meiner Android-Aktivität

bekomme ich folgende Fehler in Eclipse IDE mit ADT-Plugin ..

ImageIO cannot be Resolved 

BufferedImage cannot be Resolved 

ich das Bild nicht verarbeiten kann. Ich habe eine Idee, die Java-Bibliotheken zu integrieren, aber ich weiß nicht, wie man das in Android macht

Hier ist die Funktion, die ich brauche, damit es funktioniert.

private static BufferedImage gammaCorrection(BufferedImage original, double gamma) { 

    int alpha, red, green, blue; 
    int newPixel; 

    double gamma_new = 1/gamma; 
    int[] gamma_LUT = gamma_LUT(gamma_new); 

    BufferedImage gamma_cor = new BufferedImage(original.getWidth(), original.getHeight(), original.getType()); 

    for(int i=0; i<original.getWidth(); i++) { 
     for(int j=0; j<original.getHeight(); j++) { 

      // Get pixels by R, G, B 
      alpha = new Color(original.getRGB(i, j)).getAlpha(); 
      red = new Color(original.getRGB(i, j)).getRed(); 
      green = new Color(original.getRGB(i, j)).getGreen(); 
      blue = new Color(original.getRGB(i, j)).getBlue(); 

      red = gamma_LUT[red]; 
      green = gamma_LUT[green]; 
      blue = gamma_LUT[blue]; 

      // Return back to original format 
      newPixel = colorToRGB(alpha, red, green, blue); 

      // Write pixels into image 
      gamma_cor.setRGB(i, j, newPixel); 

     } 

    } 

    return gamma_cor;   

} 

Antwort

3

Android ist kein Standard-Java, es fehlen bestimmte Klassen. AWT ist einfach nicht da

1

Ich denke, einige Java-Bibliotheken sind nicht in Android wie die AWT

1
 String selectedImagePath; 
    ImageView img; 
    img = (ImageView)findViewById(R.id.ImageView1); 
    Bitmap yourSelectedImage = BitmapFactory.decodeFile(selectedImagePath); 
    img.setImageBitmap(yourSelectedImage); 

wenn mehrere Bild als Sie

 ArrayList<Bitmap> aList = new ArrayList<Bitmap>(); 
     aList.add(yourbitmap); 

als Set in imageviews machen kann wie oben mit for loop. weil android nicht BufferedImage Klasse bieten

+0

Kann ich getRGB(), getAlpha(), getWidth(), getType() Methoden mit Bitmap. – humandroid

+0

Ja, Sie können alle Operationen auf Bitmap durchführen, auch wenn Sie den RGB-Wert in Bitmap erhalten können. http://stackoverflow.com/questions/5669501/how-to-get-rgb-values-of-bitmap-in-android – urveshpatel50

+0

Ich habe meine Frage bearbeitet. Eine Funktion wurde mit BufferedImage hinzugefügt. Ich muss es in Bitmap ändern und Bitte beachten Sie, dass ich ImageIO for ImageIO.read() brauche; Methode und ImageIO.write(); – humandroid

-1
+2

Diese Links können die Frage beantworten, aber es wäre besser, wenn Sie die wichtigen Teile von diesen Links in hinzufügen könnten Ihre Antwort - vielleicht ein kurzes Beispiel zur Verwendung der BitmapFactory. Eines Tages funktionieren diese Links möglicherweise nicht mehr und diese Antwort wäre nutzlos. – GameDroids