如何将Compose的Preview预览导出为高清PNG/JPG格式图片
Compose预览界面导出高清JPG/PNG方案
方法1:使用Android Studio内置导出功能(无需写代码,推荐普通场景使用)
操作步骤如下:
- 打开包含
DefaultPreview注解的Compose代码文件,等待预览面板加载完成你要导出的预览内容 - hover到对应
DefaultPreview的预览卡片区域,卡片右上角会出现功能操作图标组,点击导出图标(矩形带向下箭头样式),也可以右键预览卡片,选择「导出图片」选项 - 在弹出的配置窗口中,可自行选择导出格式为PNG或JPG,调整导出分辨率、是否包含系统UI等参数,选择本地保存路径后确认即可导出高清图片。
小提示:如果需要导出的图片背景和实际效果一致,可以在预览注解上加参数配置:
@Preview(showBackground = true, backgroundColor = 0xFFFFFFFF, widthDp = 360, heightDp = 640),调整到你需要的尺寸后再导出,效果会更符合预期。
方法2:代码方式导出(适合批量导出、自定义导出参数场景)
可以通过编写Compose测试用例,手动捕获预览内容生成Bitmap再保存到本地,示例代码如下:
// 要导出的预览 @Preview(showBackground = true, backgroundColor = 0xFFFFFFFF) @Composable fun DefaultPreview() { MyCustomLayout() // 替换为你自己的布局内容 } // 测试类中的导出逻辑 @get:Rule val composeTestRule = createAndroidComposeRule<MainActivity>() @Test fun exportPreviewImage() { composeTestRule.setContent { DefaultPreview() } // 捕获根布局内容生成Bitmap val previewBitmap = composeTestRule.onRoot() .captureToImage() .asAndroidBitmap() // 保存Bitmap到本地存储 val saveFile = File(composeTestRule.activity.getExternalFilesDir(null), "default_preview_export.jpg") FileOutputStream(saveFile).use { outputStream -> // 格式选JPG的话压缩率范围0-100,100为最高画质;选PNG的话压缩率参数无效 previewBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream) } }
运行上述测试用例后,导出的高清图片会保存在应用的私有外部存储目录下。
内容的提问来源于stack exchange,提问作者Mohammad Mostafa Dastjerdi
相关产品推荐
相关产品推荐

