将准备好的布局转换为位图并将其另存为文件中的图像

极乐

我需要将准备好的布局保存到外部存储器中的图像文件中

现在,我尝试获取布局,启用图形缓存,传递给位图并保存在文件中

LayoutInflater inflate = LayoutInflater.from(this);
    View view = inflate.inflate(R.layout.to_send, null);
    view.setDrawingCacheEnabled(true);
    Bitmap returnedBitmap;
    if (view.getMeasuredHeight() <= 0) {
        view.measure(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        returnedBitmap.recycle();
        Canvas c = new Canvas(returnedBitmap);
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
        view.draw(c);
    }
    else {
        returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(returnedBitmap);
        Drawable bgDrawable = view.getBackground();
        if (bgDrawable != null)
            bgDrawable.draw(canvas);
        else
            canvas.drawColor(Color.WHITE);
        view.draw(canvas);
    }
    //Bitmap bitmap = content.getDrawingCache();
    File fPath = Environment.getExternalStorageDirectory();
    File f = new File(fPath + "Send.png");
    try {
        if (!f.exists()) {
            f.createNewFile();
        }
        FileOutputStream strm = new FileOutputStream(f);
        returnedBitmap.compress(Bitmap.CompressFormat.PNG, 80, strm);
        strm.close();
        //content.invalidate();
    }
    catch (Exception e){
        e.printStackTrace();
    } finally {
        view.setDrawingCacheEnabled(false);}
极乐

如果有人遇到同样的问题。在这里解决了我的问题。在Activity中创建布局后,我只需要获取它

RelativeLayout shareLayout = (RelativeLayout) getActivity().findViewById(R.id.loveSpace);
shareLayout.setDrawingCacheEnabled(true);
shareLayout.buildDrawingCache();
Bitmap bm = shareLayout.getDrawingCache();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

捕获布局并将其另存为图像

将画布的内容发送到Java服务器并将其另存为图像

如何在Java中绘制图形并将其另存为图像

在Kotlin中将位图另存为图像

创建一个32位图像并将其另存为tif

MATLAB-如何从.fig文件中裁剪图像的某些部分并将其另存为.mat?

将字符串转换为数组并将其另存为新数组,不会返回原始数组

如何将图像另存为位图图像文件?

转换可读流以将其另存为本地文件

将Rainbow矩阵转换为RBG并另存为PNG

我如何从TradingView图表中获取数据并将其另存为CSV文件?

如何更改图像中每个像素的最后一位并将其另存为新图像?

如何从图像中删除轮廓最大的对象并将其另存为单独的图像?

将边界框区域转换为遮罩并将其另存为PNG文件

无法生成Google图表QR码并将其另存为位图

如何将图像PDF文件另存为图像?

在图片框中调整图像大小并将其另存为PNG

将水印添加到图像,并将其另存为图像而不是php文件

在Matlab中创建表并将其另存为.mat文件

复制工作表中的范围并将其粘贴并另存为新的用户指定文件

Rails将文件另存为图像

VB .NET 2010:将大位图另存为文件

将位图另存为jpeg图像

OSX-使用Swift加载图像并将其另存为较小的png文件

将文档准备好转换为在jQuery上

如何将我的输出转换为 .JSON 并将其另存为 .json 文件

如何在 HIVE 中创建 DDL 并将其另存为目录中的文件

将 Oracle upsert 转换为 PostgreSQL 准备好的语句

如何将其转换为数据框并将其另存为 csv?