Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

image-processing

Web開発向けに画像を処理するスキルで、リサイズ・クロップ・余白トリミング・フォーマット変換(PNG/WebP/JPG)・ファイルサイズ最適化・サムネイル生成・OGカード画像の作成に対応します。ImageMagick不要でPillow(Python)を使用し、「resize image」「convert to webp」「trim logo」「optimise images」「make thumbnail」「create OG image」「crop whitespace」「process image」「image too large」などの指示で起動します。

description の原文を見る

Process images for web development — resize, crop, trim whitespace, convert formats (PNG/WebP/JPG), optimise file size, generate thumbnails, create OG card images. Uses Pillow (Python) — no ImageMagick needed. Trigger with 'resize image', 'convert to webp', 'trim logo', 'optimise images', 'make thumbnail', 'create OG image', 'crop whitespace', 'process image', or 'image too large'.

SKILL.md 本文

画像処理

bin/ に含まれる img-process を一般的な操作に使用します。複雑またはカスタムワークフローの場合は、ユーザーの環境に適応した Pillow スクリプトを生成します。

クイックリファレンス — img-process CLI

img-process resize hero.png --width 1920
img-process convert logo.png --format webp
img-process trim logo-raw.jpg -o logo-clean.png --padding 10
img-process thumbnail photo.jpg --size 200
img-process optimise hero.jpg --quality 85 --max-width 1920
img-process og-card -o og.png --title "My App" --subtitle "Built for speed"
img-process batch ./images --action convert --format webp -o ./optimised

img-process を使う場合: 操作が標準的な場合(リサイズ、変換、トリミング、サムネイル、最適化、OG カード、バッチ処理)。毎回スクリプトを生成するより高速です。

カスタムスクリプトを生成する場合: img-process でカバーされていないロジックが必要な場合(複数画像の合成、ウォーターマーク、複雑なテキストレイアウト、条件付き処理)。

前提条件

Pillow は img-process とカスタムスクリプトの両方で必要です:

pip install Pillow

Pillow が利用できない場合は、以下の代替手段を使用してください:

代替手段プラットフォームインストール最適な用途
sipsmacOS (ビルトイン)なしリサイズ、変換(トリミング/OG なし)
sharpNode.jsnpm install sharp全機能、高パフォーマンス
ffmpegクロスプラットフォームbrew install ffmpegリサイズ、変換

出力形式ガイド

ユースケース形式理由
写真、ヒーロー画像WebP最高の圧縮率、ブラウザサポートが広い
ロゴ、アイコン(透明度が必要)PNGロスレス、アルファをサポート
古いブラウザ向けフォールバックJPGユニバーサルサポート
サムネイルWebP または JPGファイルサイズを優先
OG カードPNGソーシャルプラットフォームが PNG を最適にサポート

コアパターン

形式固有の品質で保存

異なる形式は異なる保存パラメーターを必要とします。常に RGBA から JPG への合成を処理してください — JPG は透明度をサポートしないため、最初に白い背景に合成します。

from PIL import Image
import os

def save_image(img, output_path, quality=None):
    os.makedirs(os.path.dirname(output_path) or ".", exist_ok=True)
    kwargs = {}
    ext = output_path.lower().rsplit(".", 1)[-1]

    if ext == "webp":
        kwargs = {"quality": quality or 85, "method": 6}
    elif ext in ("jpg", "jpeg"):
        kwargs = {"quality": quality or 90, "optimize": True}
        # RGBA → RGB: 白い背景に合成
        if img.mode == "RGBA":
            bg = Image.new("RGB", img.size, (255, 255, 255))
            bg.paste(img, mask=img.split()[3])
            img = bg
    elif ext == "png":
        kwargs = {"optimize": True}

    img.save(output_path, **kwargs)

アスペクト比を保持してリサイズ

幅または高さのみが指定される場合、アスペクト比から他方を計算します。高品質なダウンスケーリングには Image.LANCZOS を使用します。

def resize_image(img, width=None, height=None):
    if width and height:
        return img.resize((width, height), Image.LANCZOS)
    elif width:
        ratio = width / img.width
        return img.resize((width, int(img.height * ratio)), Image.LANCZOS)
    elif height:
        ratio = height / img.height
        return img.resize((int(img.width * ratio), height), Image.LANCZOS)
    return img

空白をトリミング(自動クロップ)

ロゴとアイコンの周囲の空白を削除します。最初に RGBA に変換し、getbbox() を使用してコンテンツの境界を見つけます。

img = Image.open(input_path)
if img.mode != "RGBA":
    img = img.convert("RGBA")
bbox = img.getbbox()  # ゼロ以外のピクセルの境界ボックス
if bbox:
    img = img.crop(bbox)

サムネイル

アスペクト比を保持しながら最大寸法内に収まるように調整します:

img.thumbnail((size, size), Image.LANCZOS)

ウェブ用に最適化

リサイズと圧縮を1ステップで実行します。最高の圧縮率のために WebP に変換します。一般的な設定:幅 1920、品質 85。

クロスプラットフォームフォント検出

システムフォントパスは OS によって異なります。複数のパスを試行し、Pillow のデフォルトにフォールバックします。Linux では、fc-list でフォントを動的に検出できます。

from PIL import ImageFont

def get_font(size):
    font_paths = [
        # macOS
        "/System/Library/Fonts/Helvetica.ttc",
        "/System/Library/Fonts/SFNSText.ttf",
        # Linux
        "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
        "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf",
        # Windows
        "C:/Windows/Fonts/arial.ttf",
    ]
    for path in font_paths:
        if os.path.exists(path):
            try:
                return ImageFont.truetype(path, size)
            except Exception:
                continue
    return ImageFont.load_default()

OG カード生成(1200x630)

背景画像または単色の上にテキストを合成します。テキストの可読性のために半透明オーバーレイを適用します。テキストを水平方向の中央に配置します。

from PIL import Image, ImageDraw, ImageFont

width, height = 1200, 630

# 背景:画像または単色
if background_path:
    img = Image.open(background_path).resize((width, height), Image.LANCZOS)
else:
    img = Image.new("RGB", (width, height), bg_color or "#1a1a2e")

# テキスト可読性用の半透明オーバーレイ
overlay = Image.new("RGBA", (width, height), (0, 0, 0, 128))
img = img.convert("RGBA")
img = Image.alpha_composite(img, overlay)

draw = ImageDraw.Draw(img)
font_title = get_font(48)
font_sub = get_font(24)

# タイトルを中央に配置
if title:
    bbox = draw.textbbox((0, 0), title, font=font_title)
    tw = bbox[2] - bbox[0]
    draw.text(((width - tw) // 2, height // 2 - 60), title, fill="white", font=font_title)

img = img.convert("RGB")

一般的なワークフロー

ロゴのクリーンアップ(クライアント提供の白い背景付き JPG)

img-process trim logo-raw.jpg -o logo-trimmed.png --padding 10
img-process thumbnail logo-trimmed.png --size 512 -o favicon-512.png

本番用ヒーロー画像の準備

img-process optimise hero.jpg --max-width 1920 --quality 85
# 出力:hero.webp — リサイズおよび圧縮済み

バッチ処理

img-process batch ./raw-images --action convert --format webp --quality 85 -o ./optimised
img-process batch ./photos --action resize --width 800 -o ./thumbnails

Gemini Image Gen とのパイプライン

gemini-image-gen スキルで画像を生成してから処理します:

# Gemini で生成後(生の PNG 出力):
img-process optimise generated-image.png --max-width 1920 --quality 85
# または生成されたすべての画像をバッチ処理:
img-process batch ./generated --action optimise -o ./production

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
jezweb
リポジトリ
jezweb/claude-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/jezweb/claude-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: jezweb · jezweb/claude-skills · ライセンス: MIT