Как я могу преобразовать растровое изображение в Uri? - PullRequest
32 голосов
/ 28 ноября 2011

Я пытаюсь поделиться изображениями с Facebook, Twitter и т. Д., Используя SHARE INTENT с Android.

Я нашел код для отправки изображения с целью обмена, но этот код требует URI растрового изображения: fullSizeImageUri

Это полный код:

private void startShareMediaActivity(Bitmap image) {
    boolean isVideo=false;
    String mimeType="bmp";
    Uri fullSizeImageUri=null;
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType(mimeType);
    intent.putExtra(Intent.EXTRA_STREAM, fullSizeImageUri);
    try {
        startActivity(Intent.createChooser(intent, (isVideo ? "video" : "image")));
    } catch (android.content.ActivityNotFoundException ex) { }
}

Пожалуйста, кто-нибудь может помочь мне преобразовать растровое изображение в Uri?

спасибо

Ответы [ 6 ]

60 голосов
/ 23 апреля 2013

Вот блог Колина, в котором предлагается простой способ преобразования растрового изображения в Uri Нажмите здесь

public Uri getImageUri(Context inContext, Bitmap inImage) {
  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
  String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
  return Uri.parse(path);
}
23 голосов
/ 28 ноября 2011
String FILENAME = "image.png";
String PATH = "/mnt/sdcard/"+ FILENAME;
File f = new File(PATH);
Uri yourUri = Uri.fromFile(f);
1 голос
/ 11 марта 2016

Приведенное выше решение использует хранилище мультимедиа и сохраняет изображение в главной папке с изображениями пользователей, что делает его видимым через просмотрщик галерей / фотографий.Это решение будет хранить его как временный файл в данных ваших приложений.В этом примере inImage - это растровое изображение, а title - строка для имени файла изображения.

    File tempDir= Environment.getExternalStorageDirectory();
    tempDir=new File(tempDir.getAbsolutePath()+"/.temp/");
    tempDir.mkdir();
    File tempFile = File.createTempFile(title, ".jpg", tempDir);
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    byte[] bitmapData = bytes.toByteArray();

    //write the bytes in file
    FileOutputStream fos = new FileOutputStream(tempFile);
    fos.write(bitmapData);
    fos.flush();
    fos.close();
    return Uri.fromFile(tempFile);
0 голосов
/ 17 февраля 2017

передать растровое изображение и сжатие формата, например (PNG, JPG и т. Д.) И качество изображения в процентах

public Uri getImageUri(Bitmap src, Bitmap.CompressFormat format, int quality) {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    src.compress(format, quality, os);

    String path = MediaStore.Images.Media.insertImage(getContentResolver(), src, "title", null);
    return Uri.parse(path);
}
0 голосов
/ 13 апреля 2016
String picName = "pic.jpg";
        String PATH = Environment.getExternalStorageDirectory().getPath()+ picName;
        File f = new File(PATH);
        Uri yourUri = Uri.fromFile(f);
0 голосов
/ 28 ноября 2011

Ну, вы не можете преобразовать растровый файл в URI.Подробнее об URI здесь

URI - это унифицированный идентификатор ресурса.Но вы можете поместить растровое изображение в абсолютный или относительный URI, например,

Absolute: http://android.com/yourImage.bmp
Relative: yourImage.bmp 
...