改めて調べていて練習代わりに 選択したフォルダの下の階層を再現して画像を読み込むスクリプトを作ったのでメモ
メニューのツール>Scripts>Scripter で出るウィンドウにコピペして再生ボタンを押すことで実行できます。
実行すると表示されるファイル選択ダイアログで フォルダを指定できます
from krita import *
from PyQt5 import QtWidgets
import os
from pathlib import Path
#Shoose directory
work_dir = QtWidgets.QFileDialog.getExistingDirectory()
#filepath as object
work_path = Path( work_dir )
def add_document_to_window():
"""Add new document to Krita
Arguments:
width (int): width in pixels
height (int): height in pixels
name (str): name of the image (not the filename of the document)
colorModel (str): color model of document, e.g. "RGBA", "XYZA", "LABA", "CMYKA", "GRAYA", "YCbCrA"
colorDepth (str): color depth, e.g. "U8", "U16", "F16" or "F32"
profile (str): The name of an icc profile that is known to Krita
resolution (float): the resolution in points per inch
Returns:
the created document
"""
doc = Krita().createDocument(100, 100, "Test", "RGBA", "U8", "", 72.0)
Application.activeWindow().addView(doc)
return doc
#make PSDFile
def load_image_as_layer(parent_node,
directory_path,
extension_list= ["png","JPG","bmp"] ):
"""load imagedata on parent_node"""
img_list = []
#get image file
for ext in extension_list:
img_list += list( directory_path.glob("*." + ext))
for file_path in img_list:
if not file_path.exists():pass
new_doc = Krita().openDocument(os.fspath(file_path))
image_node = new_doc.rootNode().childNodes()[0]
parent_node.addChildNode(image_node.clone(),None)
new_child = parent_node.childNodes()[-1]
new_child.setName(file_path.name)
#fit document to image
if new_child.bounds().width()> doc.width():
doc.setWidth(new_child.bounds().width())
if new_child.bounds().height()> doc.height():
doc.setHeight(new_child.bounds().height())
new_doc.close()
def createGroupLayer_recursively(path_object,node):
"""make GroupLayer like directory"""
dir_list = [x for x in path_object.iterdir() if x.is_dir()]
doc = Krita().activeDocument()
Grouplayers = [doc.createGroupLayer(p.name) for p in dir_list]
node.setChildNodes( reversed(Grouplayers) )
load_image_as_layer(node,path_object)
for childNode in Grouplayers:
#get chld directory
dir = path_object/childNode.name()
createGroupLayer_recursively(dir,childNode)
doc = add_document_to_window()
doc_root = doc.rootNode()
#Scan the directory structure recursively
createGroupLayer_recursively(work_path,doc_root)
doc.refreshProjection()#ドキュメントの表示状態の更新
Kritaは独自ファイルのほか、PSDでの保存もできるので色々使い道はあるかと思います

0 件のコメント:
コメントを投稿