繁体   English   中英

不保存时如何压缩位图

[英]How to compress a Bitmap when not saved

我正在从布局中获取图片,但不想保存它。 我想通过意图ACTION_SEND服务直接共享。 当我发送它给异常Transaction Too many Large: data parcel size 2315980 bytes

这是我的代码片段

View myview = (View) findViewById(R.id.mylayout);

Bitmap mypicture = getBitmapFromView(myview);

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("", mypicture);

intent.setType("image/jpeg");
startActivity(intent);

我想通过意图ACTION_SEND服务直接分享

那不是一个选择。 EXTRA_TEXT保存文本 EXTRA_STREAM持有一个Uri 这些都不是Bitmap

这是我的代码片段

您的额外项目毫无意义,因为没有ACTION_SEND活动会寻找带有空键的额外项目。

您可以将位图保存到文件,然后将uri /链接共享到该文件。

public static File saveBitmapInternal(Context context, Bitmap bitmap) {
    File imagePath = new File(context.getFilesDir(), "images");
    if (!imagePath.exists() && !imagePath.mkdirs()) {
        print("Make dir failed");
    }

    return saveBitmap(bitmap, "preview.png", imagePath);
}


private static File saveBitmap(Bitmap bitmap, String filename, File root) {
    print(String.format("Saving %dx%d bitmap to %s.", bitmap.getWidth(), bitmap.getHeight(), filename));

    final File file = new File(root, filename);
    if (file.exists()) {
        file.delete();
    }
    try {
        final FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG, 99, out);

        out.flush();
        out.close();

        return file;
    } catch (final Exception e) {
        print("Exception!" + e);
    }
    return null;
}

然后分享

        // Uri uri = Uri.fromFile(file);
        Uri uri = FileProvider.getUriForFile(context,
                context.getString(R.string.file_provider_authority),
                file);

        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_STREAM, uri);

        intent.putExtra(Intent.EXTRA_TEXT, shareText);
        context.startActivity(Intent.createChooser(intent, "Share media"));

您需要在清单中设置文件提供程序(请参阅https://developer.android.com/reference/android/support/v4/content/FileProvider.html )。 如果对文件提供者有疑问,可以创建另一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM