GIMP 文字の縁取り

GIMPで文字の縁取りをする方法をメモしておきます。 ※ 縁取りをしたあと、テキストの内容を変更した場合、再度縁取りの手順をやり直す必要があります。 バージョン情報 Windows 11 GIMP 3.0.4 手順 キャンバスサイズが小さい場合、縁取りが切れることがあるので、目的の文字サイズに合わせてキャンバスサイズを十分広く設定します。ここでは、フォントサイズ 200ptに対して、幅 1920px、高さ 1080px に設定します。 フォントを設定して、テキストを入力します。ここでは、フォントは源柔ゴシック、フォントサイズ 200pt、文字色は白に設定します。 テキストレイヤーをキャンバスの隅に作成した場合、縁取りが切れることがあるので、ツールボックスから「移動」ツールを選択し、テキストレイヤーをキャンバスの中央寄りに移動します。 テキストレイヤーを右クリックして、「レイヤーを画像サイズに合わせる」を選択します。 テキストレイヤーを右クリックして、「不透明部分を選択範囲に」を選択します。 メニューから「選択」→「選択範囲の拡大」を選択し、ダイアログで希望する縁取りの太さ(ここでは 10px)を指定して「OK」をクリックします。 レイヤーパネルを右クリックして、「新しいレイヤーの追加」を選択して、レイヤーを追加します。「塗りつぶし色」は「透明」に設定します。このレイヤーはテキストレイヤーの下に配置します。 ツールボックスから「塗りつぶし」ツールを選択します。「塗りつぶす範囲」を「選択範囲」に設定します。描画色に縁取りしたい色(ここでは黒)を設定します。 レイヤーパネルから追加したレイヤーを選択して、選択範囲内をクリックして塗りつぶします。 二重の縁取り 上記の手順で一重の縁取りを作成して、最後の選択範囲が残った状態にします。 メニューから「選択」→「選択範囲の拡大」を選択し、ダイアログで希望する縁取りの太さ(ここでは 10px)を指定して「OK」をクリックします。 新しいレイヤーを作成し、前の縁取りレイヤーの下に配置します。 ツールボックスから「塗りつぶし」を選択し、描画色に二重目の縁取りしたい色(ここでは白)を設定します。 レイヤーパネルから追加したレイヤーを選択して、選択範囲内をクリックして塗りつぶします。 縁取りされた文字の回転 レイヤーパネルを右クリックして、「新しいレイヤーグループ」を選択して、レイヤーグループを作成します。 テキストレイヤー、縁取りのレイヤーをすべて選択して、レイヤーグループにドラッグ&ドロップして、レイヤーグループに追加します。 メニューから「レイヤー」→「変形」→「任意の回転」を選択します。 キャンバス内をクリックして、回転ダイアログで希望する角度を指定して「回転」をクリックします。 縁取りされた文字の移動 レイヤーパネルを右クリックして、「新しいレイヤーグループ」を選択して、レイヤーグループを作成します。 テキストレイヤー、縁取りのレイヤーをすべて選択して、レイヤーグループにドラッグ&ドロップして、レイヤーグループに追加します。 ツールボックスから「移動」ツールを選択します。 レイヤーパネルから作成したレイヤーグループを選択します。 Shift キーを押しながら、キャンバス内でドラッグして移動します。

2025年10月11日 · aoirint

Lethal Company Mod Zehs-StreamOverlaysを例としたMod改変手順

Zehs-StreamOverlaysの手元での改変を試したので、他のMod改変で共通して使える知見として、メモしておきます。 今回は公開を目的としたものではなく、知見も持っていないので、Thunderstoreへの公開は内容に含まれていません。 Zehs-StreamOverlaysのソースコードは、MIT Licenseで配布されており、改変箇所を示すため、一部引用します。 GitHub Thunderstore バージョン情報 以下のバージョンを想定しています。 Lethal Company v72 (Build ID: 18916695) Windows 11 24H2 .NET SDK 9.0.201 BepInEx v5.4.21 ZehsTeam/Lethal-Company-StreamOverlays@8ba3632 BeplnEx プラグイン開発環境の設定 BeplnEx公式チュートリアルの開発環境の設定手順に従って、プラグイン開発環境を構築します。 Basic plugin: Setting up the development environment | BepInEx Docs GitHub: 記事執筆時点のソース@ca4a997 依存関係のセットアップ Thunderstore: LethalConfig v1.4.6 Thunderstore: ShipInventoryUpdated v1.2.13 Thunderstore: CSync v5.0.1 Thunderstoreの「Manual Download」からzipファイルをダウンロードして、中のDLLファイルを取り出します。 そのままビルドに使うと、以下のようなエラーが発生します。 $ DOTNET_CLI_UI_LANGUAGE=en dotnet build --configuration Release Restore complete (0.5s) StreamOverlays failed with 4 error(s) (0.3s) D:\workspaces\lethal_company_modding_workspace\Lethal-Company-StreamOverlays\StreamOverlays\Dependencies\ShipInventoryProxy\Patches\ChuteInteractPatch.cs(10,40): error CS0117: 'ChuteInteract' does not contain a definition for 'SpawnItemClientRpc' D:\workspaces\lethal_company_modding_workspace\Lethal-Company-StreamOverlays\StreamOverlays\Dependencies\ShipInventoryProxy\Patches\ItemManagerPatch.cs(10,38): error CS0117: 'ItemManager' does not contain a definition for 'UpdateCache' D:\workspaces\lethal_company_modding_workspace\Lethal-Company-StreamOverlays\StreamOverlays\Dependencies\ShipInventoryProxy\ShipInventoryProxy.cs(12,39): error CS0122: 'LCMPluginInfo' is inaccessible due to its protection level D:\workspaces\lethal_company_modding_workspace\Lethal-Company-StreamOverlays\StreamOverlays\Plugin.cs(16,18): error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type Build failed with 4 error(s) in 1.1s BepInEx.AssemblyPublicizerを使って、エラーの原因のアクセス制御を無効化したDLLを作成します。これらのDLLはビルド時のみ使用します。 ...

2025年8月21日 · aoirint

PowerShell, ディレクトリ内のファイルの拡張子をまとめてリネームする

Windows 11 ディレクトリ内の拡張子.jfifのファイルを拡張子.jpgにリネームする。 以下のコマンドでは、直下のファイルだけが対象となり、サブディレクトリ以下は対象とならない。 Dir *.jfif | Rename-Item -NewName { [io.path]::ChangeExtension($_.name, "jpg") } 参考 bash - How do I change the extension of many files in a directory? - Stack Overflow powershell - How to add a suffix to all the files - Stack Overflow

2024年3月10日 · aoirint

Windows 11, ChromeでJPEG画像を保存するときの拡張子をjfifからjpgに変更する

Windows 11 Windows版のGoogle Chromeでimage/jpegの画像をダウンロードしようとすると、ファイル名の拡張子が.jfifとして保存される場合がある。 他のアプリケーションやブラウザ、一部のWebサイト、OSではimage/jpegが.jpgで保存される場合もあり、同じ形式にもかかわらず拡張子が混在してしまうため、管理が面倒になる。 また、.jfif拡張子をJPEG画像として認識することに対応してないプログラムがプレビューを生成しなかったり、 Webアプリケーションがファイルの種類の判別に失敗してContent-Typeをapplication/octet-streamとして扱い、リンクをクリックしたときにブラウザで開くのではなくダウンロードされるなど、不便になることがある。 regeditを使って以下のレジストリ値を書き換えることで、新規にimage/jpegの画像をダウンロードするときの拡張子を変更できる。予期しない影響が出る可能性があるため、変更する場合は注意すること。 HKEY_CURRENT_USER\Software\Classes\MIME\Database\Content Type\image/jpeg 拡張子をjpgに変更 以下の内容を拡張子.regのテキストファイルとして保存し、実行することで反映できる。 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\MIME\Database\Content Type\image/jpeg] "Extension"=".jpg" 拡張子をjfifに戻す Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\MIME\Database\Content Type\image/jpeg] "Extension"=".jfif" すでにダウンロード済みのファイルの拡張子を変更する PowerShellを使ってまとめてリネームするには、以下の記事を参照。 PowerShell, ディレクトリ内のファイルの拡張子をまとめてリネームする 参考 ブラウザでJPG画像を保存しようとすると.jfifの拡張子で保存されるのを.jpgに戻す方法 - [その他] ぺんたん info

2024年3月10日 · aoirint

Ubuntu, ファイルシステムがマウントされていない場合に書き込みを失敗させる

Ubuntu 22.04 ext4ファイルシステム 外部ストレージなどのファイルシステムのマウントに失敗したとき、 定期実行スクリプトやDockerコンテナなどが、実際にはマウントされていないマウントポイント以下に書き込みしてしまう場合があります。 /etc/fstabからnofailの指定を外せば、マウントに失敗した場合にOSが起動しなくなることで誤った操作を防げますが、 外部ストレージと関係のない他のサービスが共存している、遠隔操作を前提とした運用をしている、などの理由で、OSは起動してほしい場合があります。 マウントポイントがext4ファイルシステムにある場合、chattrコマンドを使って、変更を禁止することができます。 /mnt/mystorageのマウントを解除した状態で、以下のように指定します。 chattr +i /mnt/mystorage これによりマウントしている間、immutable属性がなくなり、変更できるようになります。 mount /mnt/mystorage linux - Prevent the possiblity of writing data to an unmounted mount point directory - Server Fault chattr(1): change file attribs on file system - Linux man page

2023年12月9日 · aoirint

MinIO CLI(mcコマンド)でエイリアスが登録されているか確認する

$ mc --version mc version RELEASE.2023-12-02T11-24-10Z (commit-id=d920e2b34b22a15bca4cd081201d3b301c623d87) Runtime: go1.21.5 linux/amd64 Copyright (c) 2015-2023 MinIO, Inc. License GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> MinIO CLI(mcコマンド)では、サーバーURLや認証情報などをmc alias setコマンドで保存して、 設定したエイリアスを使って操作します。 mc cpやmc mirrorでは、{alias}/{bucket}/{object}のように操作対象のオブジェクトを指定します。 このときaliasが登録されていなかった場合、ファイルシステム上の相対パスとして扱われるため、意図しない操作が行われるおそれがあります。 エイリアスmyaliasが登録されているかどうかは、mc alias list {alias}コマンドの終了コードで判別できます。 終了コードが0の場合、エイリアスは存在します。終了コードが1の場合、エイリアスは存在しません。 mc alias list myalias echo $? シェルスクリプトでは、以下のようなコードを追加して、エイリアスが存在しなかった場合にスクリプトを異常終了させられます。 # set +e # check alias exists mc alias list myalias >/dev/null 2>/dev/null if [ $? != 0 ]; then echo "Error: mc alias myalias does not exist" > /dev/stderr exit 1 fi # set -e

2023年12月9日 · aoirint

Dockerコンテナ内の名前解決をプライベートIPアドレスにする

Docker Engine 24.0 Docker Compose 2.21 プライベートDNSを運用しているネットワークで、 Dockerコンテナからネットワーク内の別のホストに通信したいとき、 デフォルトではGoogle Public DNS8.8.8.8でホスト名がグローバルIPアドレスに解決されるため、 ISPやCloudflare Tunnelなどの外部を経由して通信することになり、非効率で危険な通信経路になります。 また、IPアドレスによるアクセス制限を設けている場合、 プライベートIPアドレスがソースとなる通信になるように通信経路を制御したい場合があります。 以下の設定により、コンテナ内でexample.comが192.168.0.50に解決されるようになります。 Docker sudo docker run --rm --add-host "example.com:192.168.0.50" hello-world Managing /etc/hosts - Docker run reference | Docker Docs Docker Compose services: app: image: hello-world extra_hosts: - "example.com:192.168.0.50" extra_hosts - Services top-level element | Docker Docs

2023年12月9日 · aoirint

Docker Registryをホストしてhtpasswdで認証する

registry - Official Image | Docker Hub Native basic auth - Restricting access - Deploy a registry server | CNCF Distribution htpasswdファイルの作成 htpasswdファイルを作成します。 registryイメージ(Distribution Registry)はbcrypt形式のパスワードのみサポートしているため、パスワードをbcrypt形式でハッシュ化する必要があります。 sudo apt install apache2-utils mkdir auth cd auth htpasswd -cB htpasswd myuser 永続化ディレクトリの作成 mkdir data docker-compose.ymlファイルの作成 services: registry: image: registry:2 restart: always environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm # ports: # - "0.0.0.0:5000:5000" volumes: - ./data:/var/lib/registry - ./auth:/auth コンテナの実行 sudo docker compose up -d コンテナのTCP 5000番ポートでDocker Registry HTTP APIがリッスンします。 このポート宛にCloudflaredやリバースプロキシを設定して、https://docker.example.comのようにサービスを公開します。 ...

2023年12月9日 · aoirint

Dockerコンテナのメモリ使用量を制限する

Docker Engine 24.0 Docker Compose 2.21 Docker # 100 MB sudo docker update --memory "100m" "$CONTAINER_ID" # 1 GB sudo docker update --memory "1g" "$CONTAINER_ID" # 制限を解除 sudo docker update --memory "0" "$CONTAINER_ID" Docker Compose app: image: hello-world deploy: resources: limits: memory: '1g' 参考 Update the limitation of memory/CPU for existing container in docker - Stack Overflow Runtime options with Memory, CPUs, and GPUs | Docker Docs Compose Deploy Specification | Docker Docs

2023年12月9日 · aoirint

DockerコンテナのCPU使用量を制限する

Docker Engine 24.0 Docker Compose 2.21 Docker # CPU 1個 sudo docker update --cpus "1" "$CONTAINER_ID" # CPU 0.01個(最小) sudo docker update --cpus "0.01" "$CONTAINER_ID" # 制限を解除 sudo docker update --cpus "0" "$CONTAINER_ID" Docker Compose app: image: hello-world deploy: resources: limits: cpus: '0.1' 参考 Update the limitation of memory/CPU for existing container in docker - Stack Overflow Runtime options with Memory, CPUs, and GPUs | Docker Docs Compose Deploy Specification | Docker Docs

2023年12月9日 · aoirint