diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index eff8077..14423e6 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -31,6 +31,18 @@ } } }, + { + "id": "4aa18cc5a778b7ef", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "GIMP Scripting.md", + "mode": "source", + "source": false + } + } + }, { "id": "22a1e3cf3ac1bdc2", "type": "leaf", @@ -108,7 +120,7 @@ "state": { "type": "backlink", "state": { - "file": "Corbia spider.md", + "file": "GIMP Scripting.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -125,7 +137,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Corbia spider.md", + "file": "GIMP Scripting.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -148,7 +160,7 @@ "state": { "type": "outline", "state": { - "file": "Corbia spider.md" + "file": "GIMP Scripting.md" } } }, @@ -191,11 +203,12 @@ "copilot:Copilot Chat": false } }, - "active": "22a1e3cf3ac1bdc2", + "active": "4aa18cc5a778b7ef", "lastOpenFiles": [ + "Corbia spider.md", + "GIMP Scripting.md", "Untitled.md", "Niche Fragrence.md", - "Corbia spider.md", "Docker.md", "Weaviate.md", "Install neo4j on Debian.md", diff --git a/GIMP Scripting.md b/GIMP Scripting.md new file mode 100644 index 0000000..4baba38 --- /dev/null +++ b/GIMP Scripting.md @@ -0,0 +1,44 @@ + +## How to export every layer as single image + +```python +import os +import gimpfu + +def export_layers(image, drawable): + image_uri = gimpfu.pdb.gimp_image_get_uri(image) + image_path = image_uri[7:] # Removing 'file://' from the URI + output_folder = os.path.dirname(image_path) + if output_folder and os.path.exists(output_folder): + for i, layer in enumerate(image.layers, start=1): + filename = "layer_{:03}.png".format(i) + filepath = os.path.join(output_folder, filename) + tmp_image = gimpfu.pdb.gimp_image_new(image.width, image.height, image.base_type) + layer_copy = gimpfu.pdb.gimp_layer_new_from_drawable(layer, tmp_image) + gimpfu.pdb.gimp_image_insert_layer(tmp_image, layer_copy, None, 0) + gimpfu.pdb.file_png_save_defaults(tmp_image, layer_copy, filepath, filename) + gimpfu.pdb.gimp_image_delete(tmp_image) + else: + gimpfu.gimp_message("Please save the image first to determine the output directory.") + +def register_export_layers(): + gimpfu.register( + "python_fu_export_layers", + "Export all layers", + "Exports all layers as separate PNG files", + "Your Name", "Your Name", "2024", + "Export Layers...", + "*", # This makes the script available for all types of images + [ + (gimpfu.PF_IMAGE, "image", "Input image", None), + (gimpfu.PF_DRAWABLE, "drawable", "Input drawable", None), + ], + [], + export_layers, + menu="/File/Export/" + ) + gimpfu.main() + +register_export_layers() +``` +