export_layers
Export individual layers from Aseprite sprites as separate image files for editing, sharing, or integration into other projects.
Instructions
Export each layer of the sprite as a separate file.
Args: filename: Name of the Aseprite file to export output_dir: Directory to save the exported layers format: Output format (default: "png") scale: Export scale factor (default: 1.0)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| output_dir | Yes | ||
| format | No | png | |
| scale | No |
Implementation Reference
- aseprite_mcp/tools/export.py:76-147 (handler)The export_layers function is defined here, which validates inputs, builds a Lua script to export individual layers of an Aseprite file, and executes the script using the LuaBuilder utility.
async def export_layers( filename: str, output_dir: str, format: str = "png", scale: float = 1.0 ) -> str: """Export each layer of the sprite as a separate file. Args: filename: Name of the Aseprite file to export output_dir: Directory to save the exported layers format: Output format (default: "png") scale: Export scale factor (default: 1.0) """ try: # Validate inputs file_path = validate_file_path(filename, must_exist=True) output_path = validate_file_path(output_dir, must_exist=True) format = validate_export_format(format) if not output_path.is_dir(): raise ValidationError("output_dir", str(output_path), "Must be a directory") if scale <= 0: raise ValidationError("scale", scale, "Scale must be positive") # Build Lua script to export each layer builder = LuaBuilder() builder.open_sprite(str(file_path)) builder.add_line('local spr = app.activeSprite') builder.if_condition('not spr') builder.add_line('error("No active sprite")') builder.end_if() builder.add_line() builder.add_line('local basename = app.fs.fileTitle(spr.filename)') builder.for_loop('i', 1, '#spr.layers') builder.add_line('local layer = spr.layers[i]') builder.add_comment('Hide all layers except current') builder.for_loop('j', 1, '#spr.layers') builder.add_line('spr.layers[j].isVisible = (i == j)') builder.end_loop() builder.add_line() # Export current layer output_template = str(output_path / f"{{basename}}_{{layer}}.{format}") builder.add_line(f'local outputFile = "{output_template}"') builder.add_line('outputFile = outputFile:gsub("{basename}", basename)') builder.add_line('outputFile = outputFile:gsub("{layer}", layer.name)') if scale != 1.0: builder.export_sprite('outputFile', scale) else: builder.add_line('spr:saveCopyAs(outputFile)') builder.end_loop() # Restore all layers visibility builder.for_loop('i', 1, '#spr.layers') builder.add_line('spr.layers[i].isVisible = true') builder.end_loop() # Execute script cmd = get_command() success, output = cmd.execute_lua_script(builder.build()) return f"Layers exported successfully to {output_path}" except (ValidationError, AsepriteError) as e: return f"Failed to export layers: {e}" except Exception as e: return f"Unexpected error: {e}"