0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pygameでRPG(画像追加)

Last updated at Posted at 2024-10-03

記事全体の目次へ移動

画像を追加

ここをクリックしてください
でもちょっと足りないので編集しましょう
以下のコードで足りない画像を追加できます

![manto_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3874121/b00b5281-3c67-b2b1-2105-bd07ddc19e7e.png)

![player.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3874121/8c53e5d8-665d-c204-7b9d-67d3b361cfbc.png)

上の画像が下の画像のようになります

エラーが出たらフォルダ名が日本語になってないかファイル名が数字で始まってないか確認しましょうr文字も忘れずつけましょうr"ファイルのパス"


```python:画像編集

import cv2
import numpy as np

# 画像を読み込む(アルファチャンネルを含む)
# ここにキャラクター画像のパスを貼り付ける
image = cv2.imread(パス, cv2.IMREAD_UNCHANGED)

# 画像が正しく読み込まれたか確認
if image is None:
    print("画像が読み込まれませんでした。ファイルパスを確認してください。")
else:
    # コピーする部分の座標とサイズ
    x, y, w, h = 32, 0, 32, 128
    part = image[y:y+h, x:x+w]

    # 元の画像の右端に追加するために、新しい画像を作成
    new_width = image.shape[1] + w
    new_image = np.zeros((image.shape[0], new_width, 4), dtype=np.uint8)

    # 元の画像を新しい画像にコピー
    if image.shape[2] == 4:
        new_image[:, :image.shape[1], :] = image
    else:
        new_image[:, :image.shape[1], :3] = image
        new_image[:, :image.shape[1], 3] = 255  # アルファチャンネルを追加

    # コピーした部分を新しい画像の右端に追加
    if part.shape[2] == 4:
        new_image[:, image.shape[1]:, :] = part
    else:
        new_image[:, image.shape[1]:, :3] = part
        new_image[:, image.shape[1]:, 3] = 255  # アルファチャンネルを追加

    # 結果を保存
    cv2.imwrite('edited_image.png', new_image)
    print("完了しました")

フォルダ内のすべてのファイルに追加

ここをクリックしてください

manto_12.png

player.png

上の画像が下の画像のようになります。

ファイルが読み込まれない場合はフォルダ名を確認してください。日本語のフォルダ名はダメです。フォルダ名がキャラチップだとエラーが出ます。サイズが違うのもダメです。大きさは96*128です。

pngファイルです。jpegファイルではありません。

OSError: [WinError 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。というエラー文が表示されたら、パスの前に r をつけましょう。r"フォルダのパス" input()にしたら必要なくなりました。

ここではフォルダのパスにダブルクォーテーションは必要ありません。
スクリーンショット (692).png

画像編集
import cv2
import numpy as np
import os

# 処理するフォルダのパスを指定
folder_path = input("folder_path: ")
output_folder = input("output_folder: ")

# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# フォルダ内のすべてのファイルを処理
for filename in os.listdir(folder_path):
    if filename.endswith(".png"):
        file_path = os.path.join(folder_path, filename)
        image = cv2.imread(file_path, cv2.IMREAD_UNCHANGED)

        # 画像が正しく読み込まれたか確認
        if image is None:
            print(f"{filename} が読み込まれませんでした。")
            continue

        # コピーする部分の座標とサイズ
        x, y, w, h = 32, 0, 32, 128
        part = image[y:y+h, x:x+w]

        # 元の画像の右端に追加するために、新しい画像を作成
        new_width = image.shape[1] + w
        new_image = np.zeros((image.shape[0], new_width, 4), dtype=np.uint8)

        # 元の画像を新しい画像にコピー
        if image.shape[2] == 4:
            new_image[:, :image.shape[1], :] = image
        else:
            new_image[:, :image.shape[1], :3] = image
            new_image[:, :image.shape[1], 3] = 255  # アルファチャンネルを追加

        # コピーした部分を新しい画像の右端に追加
        if part.shape[2] == 4:
            new_image[:, image.shape[1]:, :] = part
        else:
            new_image[:, image.shape[1]:, :3] = part
            new_image[:, image.shape[1]:, 3] = 255  # アルファチャンネルを追加

        # 結果を保存
        output_path = os.path.join(output_folder, filename)
        cv2.imwrite(output_path, new_image)
        print(f"{filename} の処理が完了しました。")

print("すべてのファイルの処理が完了しました。")

フォルダ内のすべてのファイルに追加2

(pyファイルがあるフォルダで実行するだけです。フォルダ名の指定がいりません。上書きなので元の画像は失われます)

ここをクリックしてください
import cv2
import numpy as np
import os

# スクリプトが存在するフォルダのパスを取得
folder_path = os.path.dirname(os.path.abspath(__file__))
output_folder = os.path.join(folder_path)

# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# フォルダ内のすべてのファイルを処理
for filename in os.listdir(folder_path):
    if filename.endswith(".png"):
        file_path = os.path.join(folder_path, filename)
        image = cv2.imread(file_path, cv2.IMREAD_UNCHANGED)

        # 画像が正しく読み込まれたか確認
        if image is None:
            print(f"{filename} が読み込まれませんでした。")
            continue

        # コピーする部分の座標とサイズ
        x, y, w, h = 32, 0, 32, 128
        part = image[y:y+h, x:x+w]

        # 元の画像の右端に追加するために、新しい画像を作成
        new_width = image.shape[1] + w
        new_image = np.zeros((image.shape[0], new_width, 4), dtype=np.uint8)

        # 元の画像を新しい画像にコピー
        if image.shape[2] == 4:
            new_image[:, :image.shape[1], :] = image
        else:
            new_image[:, :image.shape[1], :3] = image
            new_image[:, :image.shape[1], 3] = 255  # アルファチャンネルを追加

        # コピーした部分を新しい画像の右端に追加
        if part.shape[2] == 4:
            new_image[:, image.shape[1]:, :] = part
        else:
            new_image[:, image.shape[1]:, :3] = part
            new_image[:, image.shape[1]:, 3] = 255  # アルファチャンネルを追加

        # 結果を保存
        output_path = os.path.join(output_folder, filename)
        cv2.imwrite(output_path, new_image)
        print(f"{filename} の処理が完了しました。")

print("すべてのファイルの処理が完了しました。")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?