Как получить формат изображения изображений из галереи - PullRequest
9 голосов
/ 23 февраля 2012

Я хочу знать формат изображения (т.е. JPFG / PNG и т. Д.) Изображений, которые я получаю из галереи.

Мне нужно выбрать изображения из галереи устройства и отправить их по адресусервер в формате Base64, но сервер хочет знать формат изображения.

Любая помощь приветствуется.

Ответы [ 3 ]

9 голосов
/ 17 апреля 2012

Отредактировано:

Используйте следующий метод для извлечения MIME-типа изображения из галереи:

public static String GetMimeType(Context context, Uri uriImage)
{
    String strMimeType = null;

    Cursor cursor = context.getContentResolver().query(uriImage,
                        new String[] { MediaStore.MediaColumns.MIME_TYPE },
                        null, null, null);

    if (cursor != null && cursor.moveToNext())
    {
        strMimeType = cursor.getString(0);
    }

    return strMimeType;
}

Это вернет что-то вроде "image / jpeg".


Предыдущий ответ:

Вы можете использовать следующий код для преобразования изображения из Галереи в нужный вам формат, например JPG:

ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();

Bitmap bitmapImage = BitmapFactory.decodeStream(
                         getContentResolver().openInputStream(myImageUri));

if (bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, outputBuffer))
{
    // Then perform a base64 of the byte array...
}

Таким образом, вы будете контролировать формат изображения, который вы отправляете на сервер, и даже можете сжимать больше для экономии пропускной способности. ;)

1 голос
/ 15 марта 2016

Возможно получить MIME-тип только путем.

 public static String getMimeType(String imageUrl) {
        String extension = MimeTypeMap.getFileExtensionFromUrl(imageUrl);
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
                extension);
        // Do Manual manipulation if needed
        if ("image/x-ms-bmp".equals(mimeType)) {
            mimeType = "image/bmp";
        }
        return mimeType;
    }
0 голосов
/ 23 февраля 2012

Вы можете получить расширение файла по пути к файлу, выполнив что-то вроде этого:

int dotposition= filePath.lastIndexOf(".");
String format = filePath.substring(dotposition + 1, file.length());

Устраняет ли это проблему?

...