PyGiCo 解説：ブログから画像を生成する魔法

**PyGiCo** は、ブログ記事の内容を分析し、その内容に合った画像を自動で生成してくれる、まるで魔法のようなツールです。しかも、生成した画像に好きなテキストを追加することもできます。

この解説では、PyGiCo がどのような仕組みで動いているのか、そして実際にどのように使えばいいのか、初心者の方でも理解できるように丁寧に解説していきます。

---

こちらの記事もおすすめ

https://hamaruki.com/pygimp-master-gimp-with-python/

## PyGiCo の構成要素：それぞれの役割を理解しよう！

PyGiCo は、いくつかの重要な要素が組み合わさって動いています。それぞれの要素がどんな役割を担っているのか、簡単に見ていきましょう。

### content_analysis (コンテンツ分析)
ブログ記事から重要な内容を抽出する役割を担います。
  * **blog_extractor.py:** ブログ記事を読み込み、内容を解析します。
  * **prompt_generator.py:** 解析した内容に基づいて、画像生成AIに指示を出すためのプロンプトを作成します。

### image_generation (画像生成)

プロンプトに基づいて、実際に画像を生成する役割を担います。
  * **comfy_interface.py:** 高度な画像生成AIである ComfyUI との連携を行います。

### image_processing (画像処理)

生成された画像にテキストを追加するなど、最後の仕上げを行います。
  * **gimp_executor.py:** 画像編集ソフト GIMP を操作して、画像にテキストを挿入します。

### utils (ユーティリティ)

PyGiCo がスムーズに動作するための補助的な機能を提供します。
  * **config_manager.py:** ユーザーの設定を読み込んだり、必要なファイルの場所を管理したりします。

## PyGiCo の使い方：魔法の準備と呪文の唱え方

PyGiCo を使うには、まず「魔法の準備」として、必要なソフトウェアをインストールする必要があります。

* **ComfyUI:**  高性能な画像生成AIです。[公式サイト](https://github.com/comfyanonymous/ComfyUI) からダウンロードしてインストールしてください。
* **GIMP:**  画像にテキストを追加するための画像編集ソフトです。 [公式サイト](https://www.gimp.org/downloads/) からダウンロードしてインストールしてください。

これらのソフトウェアをインストールしたら、**ComfyUIを起動** し、続いて PyGiCo を使って画像を生成します。

### コマンドラインで画像生成！

コマンドラインに呪文のようにコマンドを入力して、PyGiCo を操作してみましょう。

```bash
pygico-imagegen --blog ブログ記事のパス --output 出力画像のパス --text "追加するテキスト"
```

例えば、「sample.txt」というブログ記事から画像を生成し、「output.png」という名前で保存したい場合は、次のように入力します。

```bash
pygico-imagegen --blog sample.txt --output output.png --text "美しい風景"
```

### Python スクリプトで画像生成！

プログラミングが得意な方は、Python スクリプトを使って PyGiCo を操作することもできます。

```python
"""PyGiCo-ImageGenのPythonパッケージとしての使用例"""

from pygico_imagegen import BlogExtractor, PromptGenerator, ComfyInterface, GimpExecutor
from loguru import logger
from art import text2art
from pygico_imagegen.utils.config_manager import ConfigManager
from pygico_imagegen.config import settings
from pprint import pprint

def main():
    print(text2art("PyGIMP USAGE"))

    # 設定内容を表示
    logger.info("Current settings:")
    pprint(settings.model_dump())
    # raise

    config = ConfigManager()
    logger.info("PyGiCo-ImageGen を開始します")
    blog_path = "sample_blog.md"
    text = "Hello PyGiCo"
    output_path = "output1.png"
    gimp_path = "gimp-console-2.10.exe" # GIMPの実行ファイルパスを指定してください

    # ブログ内容の抽出
    logger.info(f"ブログファイル {blog_path} から内容を抽出します")
    extractor = BlogExtractor(blog_path)
    blog_content = extractor.extract()

    # プロンプトの生成とワークフローのカスタマイズ
    logger.info("画像生成プロンプトを作成し、ワークフローをカスタマイズします")
    generator = PromptGenerator()
    workflow = config.get_workflow()
    customized_workflow = generator.customize_workflow(workflow, blog_content)

    # 画像の生成
    logger.info("ComfyUI を使用して画像を生成します")
    comfy = ComfyInterface(settings.SERVER_ADDRESS)
    image = comfy.generate_image(customized_workflow)

    # テキストの追加
    logger.info(f"画像にテキスト '{text}' を追加します")
    gimp = GimpExecutor(gimp_path)
    temp_path = f"{text}.temp.png"
    image[-1].save(temp_path)
    gimp.add_text(temp_path, text, output_path)


    logger.success(f"処理が完了しました。結果は {output_path} に保存されています")

if __name__ == "__main__":
    main()

```

## PyGiCo の利点: なぜ PyGiCo なのか？

PyGiCo を使う利点は、以下の点が挙げられます。

* **ブログの内容に合った画像を自動生成:** 面倒な画像探しから解放されます！
* **高品質な画像生成:** ComfyUI の力で、まるでプロが描いたような画像を生成できます！
* **簡単操作:** コマンドラインまたは Python スクリプトで、簡単に操作できます！
* **カスタマイズ可能:**  設定ファイルを変更することで、生成する画像のスタイルやテキストのフォントなどを調整できます。

## まとめ

PyGiCo を使えば、誰でも簡単にブログの内容に合った魅力的な画像を生成できます。ぜひ PyGiCo を使ってみてください！


## リポジトリ

https://github.com/Sunwood-ai-labs/PyGiCo

https://github.com/Sunwood-ai-labs/PyGIMP