类型 函数 库 display.* 返回值 无 修订 版本 2024.3703 关键词 屏幕截图,屏幕捕获,保存屏幕 另请参阅 display.capture() display.captureBounds() display.captureScreen()
将第一个参数引用的显示对象渲染为 JPEG 或 PNG 图像,并将其保存为新文件。显示对象当前必须位于显示层次结构中,否则不会保存图像。如果对象是显示组,则所有子对象也会被渲染。
启用内容缩放时,display.save()
会以设备的原始分辨率保存图像。例如,如果使用此方法保存 100×200 像素的显示对象,则在分辨率较高的设备上保存时,它可能具有更多实际像素。
当应用暂停时,Android 操作系统会从内存中移除所有 OpenGL 纹理。当应用恢复时,Corona 必须重新加载所有图像,但捕获的图像不再存在于内存中。您不能在 Android "applicationSuspend"
和 "applicationExit"
事件中使用 display.save() 函数,因为内存中没有要保存的 OpenGL 纹理。
如果您需要在应用程序启动时保存显示对象,例如在执行 main.lua
来初始化应用程序时,则必须在 timer.performWithDelay() 调用中调用 display.save()
。建议至少延迟 100 毫秒。
local function saveWithDelay() display.save( group, "group.jpg" ) end timer.performWithDelay( 100, saveWithDelay )
display.save( displayObject, options )
DisplayObject. 引用要保存的显示对象/组的变量。
表. 保存选项的表 — 有关详细信息,请参阅下一节。
字符串. 要保存为 JPEG 或 PNG 的文件名。
常量. 以下值之一(system.DocumentsDirectory
为默认值)
system.DocumentsDirectory
system.ApplicationSupportDirectory
system.TemporaryDirectory
system.CachesDirectory
表. 包含要使用的背景清除颜色的表数组。表格式可以是以下之一,其中每个值的范围在 0
到 1
之间
{ gray }
{ gray, alpha }
{ red, green, blue }
{ red, green, blue, alpha }
布尔值. 如果为 true
,则保存整个对象/组,即使屏幕上不可见的部分也会保存。如果省略,则保存将限制在屏幕边界内。出于旧版兼容性目的,可以使用已弃用的 isFullResolution
选项名称,其效果相同。
数字. 指示保存的 JPEG 图像质量的值,介于 0
和 1
之间。对 PNG 没有影响。这仅适用于设备,不适用于 Corona Simulator。
display.save( displayObject, filename [, baseDir] )
DisplayObject. 引用要保存的显示对象/组的变量。
字符串. 要保存为 JPEG 或 PNG 的文件名。
常量. 以下值之一(system.DocumentsDirectory
为默认值)
system.DocumentsDirectory
system.ApplicationSupportDirectory
system.TemporaryDirectory
system.CachesDirectory
local myObject1 = display.newRect( 50, 50, 100, 150 ) -- Create a rectangle object local myObject2 = display.newCircle( 100, 300, 50 ) -- Create a circle object local group = display.newGroup() group:insert( myObject1 ) group:insert( myObject2 ) display.save( group, { filename="entireGroup.png", baseDir=system.DocumentsDirectory, captureOffscreenArea=true, backgroundColor={0,0,0,0} } )