Использование классов BufferedImage и ImageIO в моей деятельности Android

Я разрабатываю приложение для Android, которое может выполнять гамма-коррекцию изображения, хранящегося в телефоне. Моя активность может получить местоположение изображения, но я не могу использовать класс BufferedImage и класс ImageIO в своем приложении.

Я получаю следующую ошибку в Eclipse IDE с плагином ADT.

 ImageIO cannot be Resolved

 BufferedImage cannot be Resolved  

Я не могу обработать изображение. У меня есть идея включить библиотеки Java, но я не знаю, как это сделать в Android.

Вот функция, которая мне нужна, чтобы заставить ее работать.

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;        

}

person humandroid    schedule 01.11.2012    source источник


Ответы (4)


Android — это не стандартная java, в нем отсутствуют определенные классы. АВТ просто нет

person Konstantin Pribluda    schedule 01.11.2012

Я думаю, что некоторых библиотек Java нет в Android, таких как awt.

person Joe Plante    schedule 01.11.2012

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

если несколько изображений, чем вы можете сделать

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

чем установлено в изображениях, как указано выше, с использованием цикла for. потому что андроид не предоставляет класс BufferedImage

person urveshpatel50    schedule 01.11.2012
comment
Могу ли я использовать методы getRGB(), getAlpha(), getWidth(), getType() с Bitmap. - person humandroid; 01.11.2012
comment
да, вы можете выполнять все операции с растровым изображением, даже если вы можете получить значение RGB в растровом изображении. stackoverflow .com/questions/5669501/ - person urveshpatel50; 01.11.2012
comment
Я отредактировал свой вопрос. Добавлена ​​функция, использующая BufferedImage. Мне нужно изменить его на растровое изображение, и обратите внимание, что мне нужно ImageIO для ImageIO.read(); метод и ImageIO.write(); - person humandroid; 01.11.2012
comment
сначала прочитайте это stackoverflow.com/questions/5392695/bufferedimage-in-android нельзя использовать буферизованное изображение - person urveshpatel50; 01.11.2012

Попробуйте с BitmapFactory или Bitmap

http://developer.android.com/reference/android/graphics/BitmapFactory.html http://developer.android.com/reference/android/graphics/Bitmap.html

person biju    schedule 06.11.2014
comment
Эти ссылки могут отвечать на вопрос, но было бы лучше, если бы вы добавили важные части этих ссылок в свой ответ — возможно, краткий пример того, как использовать BitmapFactory. Однажды эти ссылки могут перестать работать, и тогда этот ответ будет бесполезен. - person GameDroids; 06.11.2014