Skip to main content
Glama
ext-sakamoro

Aseprite MCP Tools

by ext-sakamoro

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
NameRequiredDescriptionDefault
filenameYes
output_dirYes
formatNopng
scaleNo

Implementation Reference

  • 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}"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ext-sakamoro/AsepriteMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server