Поделиться Bitmap () на Android для Twitter, Facebook, почты - PullRequest
9 голосов
/ 05 апреля 2011

может быть, простой вопрос: я хочу поделиться полученным растровым изображением по сети в твиттере / фейсбуке / и т. Д. По умолчанию с общим доступом "намерение".

Код, который я нашел

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("image/jpeg");
        sendIntent.putExtra(Intent.EXTRA_STREAM, "IDONTKNOW");
        sendIntent.putExtra(Intent.EXTRA_TEXT,
                "See my captured picture - wow :)");
        startActivity(Intent.createChooser(sendIntent, "share"));

необходимо заполнить в точке «IDONTKNOW» растровым изображением. (This.bitmap)

Я не нашел способа справиться с этим, не сохранив растровое изображение во внутреннем SD ..

1010 * привет *

Ответы [ 4 ]

7 голосов
/ 12 мая 2013

Просто вы можете конвертировать растровое изображение в PNG из внешнего хранилища.

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File imageFile = new File(path, getCurrentTime()+ ".png");
FileOutputStream fileOutPutStream = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream);

fileOutPutStream.flush();
fileOutPutStream.close();

Затем вы можете получить URI через Uri.parse:

return Uri.parse("file://" + imageFile.getAbsolutePath());
4 голосов
/ 15 сентября 2011

Возможно, уже немного поздно, но вы также можете сделать String url = Images.Media.insertImage(context.getContentResolver(), image, "title", null);, если вам все равно, как оно хранится.

1 голос
/ 06 апреля 2011

Хорошо, я получил его самостоятельно, кажется, нет способа получить изображение URI без сохранения растрового изображения на диск, поэтому я использую этот простой метод:

    private Uri storeImage() {
    this.storedImage = null;
    this.storeImage = true;
    // Wait for the image
    while (this.storedImage == null && !this.stop)
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    this.storeImage = false;
    FileOutputStream fileOutputStream = null;
    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File file = new File(path, "cwth_" + getCurrentTime()+ ".jpg");
    try {
        fileOutputStream = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
    this.storedImage.compress(CompressFormat.JPEG, JPEG_STORE_QUALITY, bos);
    try {
        bos.flush();
        bos.close();
        fileOutputStream.flush();
        fileOutputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return Uri.parse("file://" + file.getAbsolutePath());
}
0 голосов
/ 23 сентября 2013

Отправить двоичный контент Двоичные данные передаются с помощью действия ACTION_SEND в сочетании с установкой соответствующего типа MIME и помещением URI в данные в дополнительное имя EXTRA_STREAM. Это обычно используется для обмена изображениями, но может использоваться для обмена любым типом двоичного содержимого:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));

источник http://developer.android.com/training/sharing/send.html

...