Проблемы с обработкой растровых изображений в Android Studio - PullRequest
0 голосов
/ 16 июня 2020

Я разрабатываю приложение для выполнения множества задач, связанных с изображениями и файлами PDF. В одной из функций я конвертирую изображения в PDF. Я столкнулся с несколькими проблемами при обработке изображений с помощью растровых изображений.

1) Когда я создаю PDF-файл с изображениями, которые я щелкнул с помощью камеры своего телефона, они по какой-то причине автоматически поворачиваются на 90 градусов против часовой стрелки. Когда я нажимаю на изображение, я использовал портретный режим, изображение сохраняется в галерее моего телефона в портретном режиме. Когда я просматриваю его в галерее своего телефона, он отображается правильно, но когда я загружаю его в ImageView в Android Studio, он показывает мне изображение, повернутое против часовой стрелки на 90 градусов. Я использую приведенный ниже код для загрузки изображений в ImageView:

File file = new File(imagez.get(position));
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(bitmap);

Здесь imagez - это массив, содержащий путь ко всем изображениям, выбранным пользователем в строковом формате. например, "/ storage / emualted / 0 / pics / ...." вроде этого. Эта проблема возникает только с изображениями, которые я щелкнул с помощью камеры своего телефона, другие изображения, которые я загрузил из inte rnet или из WhatsApp или Facebook, все работают нормально.

2) Моя вторая проблема заключается в том, что когда я прокручиваю PDF, который я создал, изображения загружаются медленно. Создание PDF-файла завершено, изображения должны быть там все время, вместо этого они загружаются каждый раз, когда я прокручиваю вверх и вниз, как если бы я использовал представление адаптера для расширения представления списка, где невидимые элементы уничтожаются при выходе из view и снова загружается, когда я прокручиваю назад. Я использую класс itextpdf для преобразования изображений в PDF.

EDIT: Мой вопрос в том, что я хочу, чтобы изображение отображалось в той ориентации, в которой он был нажат, и когда я создаю PDF, изображение должно быть сохранено как оригинал (он не должен поворачиваться автоматически). И я также могу заставить мой созданный PDF загружать страницы быстро, если это возможно. Спасибо.

1 Ответ

1 голос
/ 22 июня 2020

Проблема, с которой вы столкнулись, - это обычная проблема. Я предлагаю вам попробовать следующий метод:

int orientation = 0;
ExifInterface exif = new ExifInterface(path_to_your_image);
orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0);

if(orientation != 0)
{
     Matrix rotateMatrix = new Matrix();

     if (orientation == 6)
         rotateMatrix.postRotate(90);
     else if (orientation == 3)
         rotateMatrix.postRotate(180);
     else if (orientation == 8)
         rotateMatrix.postRotate(270);
     else
         rotateMatrix.postRotate(0);

     Bitmap newBitmap = Bitmap.createBitmap(previous_bitmap, 0, 0, previous_bitmap.getWidth(), previous_bitmap.getHeight(), rotateMatrix, false);

}
else
{
     Bitmap newBitmap = Bitmap.createBitmap(previous_bitmap, 0, 0, previous_bitmap.getWidth(), previous_bitmap.getHeight);
}

//After this you can save your bitmap wherever you want

Что касается вашей второй проблемы, я полагаю, что ваши изображения слишком большие. Попробуйте уменьшить их размер или размеры, скажем, 1200 x 1200 или что вам больше нравится.

Надеюсь, это поможет!

...