images-convert 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +25 -0
- data/.github/workflows/ci.yml +79 -0
- data/.github/workflows/release.yml +122 -0
- data/.gitignore +14 -0
- data/CHANGELOG.md +146 -0
- data/Gemfile +9 -0
- data/LICENSE +41 -0
- data/README.md +378 -0
- data/RELEASE_NOTES_v0.2.12.md +66 -0
- data/RELEASE_NOTES_v0.2.3.md +19 -0
- data/RELEASE_NOTES_v0.3.0.md +66 -0
- data/RELEASE_NOTES_v0.4.0.md +14 -0
- data/RELEASE_NOTES_v0.4.1.md +13 -0
- data/Rakefile +13 -0
- data/bin/images-convert +8 -0
- data/bin/imgconv +8 -0
- data/images-convert.gemspec +39 -0
- data/lib/images_convert/cleanup.rb +31 -0
- data/lib/images_convert/configuration.rb +303 -0
- data/lib/images_convert/mini_magick_stub.rb +121 -0
- data/lib/images_convert/version.rb +5 -0
- data/lib/images_convert/waifu2x_test_stub.rb +93 -0
- data/lib/images_convert.rb +1557 -0
- data/lib/rubygems_plugin.rb +34 -0
- data/lib/waifu2x/downloader.rb +89 -0
- data/lib/waifu2x/pdf_builder.rb +105 -0
- data/lib/waifu2x/processor.rb +301 -0
- data/lib/waifu2x/setup.rb +127 -0
- data/lib/waifu2x/version.rb +5 -0
- data/lib/waifu2x.rb +221 -0
- data/test/images/autumn.jpg +0 -0
- data/test/images/spring.jpg +0 -0
- data/test/images/summer.jpg +0 -0
- data/test/images/winter.jpg +0 -0
- data/test/support/waifu2x_test_stub.rb +91 -0
- data/test/test_config.rb +143 -0
- data/test/test_fixtures.rb +144 -0
- data/test/test_formats.rb +213 -0
- data/test/test_help.rb +33 -0
- data/test/test_helper.rb +17 -0
- data/test/test_helper_mini_magick_stub.rb +4 -0
- data/test/test_selection.rb +142 -0
- data/test/test_version.rb +16 -0
- data/test/test_waifu2x.rb +81 -0
- metadata +179 -0
data/README.md
ADDED
@@ -0,0 +1,378 @@
|
|
1
|
+
# ImageMagickで簡単画像変換
|
2
|
+
|
3
|
+
[](https://rubygems.org/gems/images-convert)
|
4
|
+
[](https://rubygems.org/gems/images-convert)
|
5
|
+
[](https://github.com/Atelier-Mirai/images-convert/actions/workflows/ci.yml)
|
6
|
+
|
7
|
+
ImageMagickを使った画像形式変換のためのRuby gem。Thorで構築され、単一ファイル変換、ディレクトリ一括変換、設定値の保存機能、waifu2xによる高解像度アップスケールを備えたCLIツールです。HEIC、JPG、PNG、WebPなど様々な画像形式間の変換をサポートします。
|
8
|
+
|
9
|
+
## インストール
|
10
|
+
|
11
|
+
**インストールは超簡単! ターミナルから次のコマンドを実行するだけ**
|
12
|
+
```bash
|
13
|
+
gem install images-convert
|
14
|
+
```
|
15
|
+
|
16
|
+
**🎉 インストール完了!** すぐに使い始めてみましょう!
|
17
|
+
```bash
|
18
|
+
# 単一ファイル変換
|
19
|
+
# HEIC→JPGへの変換が既定値です。画像幅は1920xにリサイズされます。
|
20
|
+
# 例: ~/Downloads/IMG_2000.HEIC を ~/Desktop/IMG_2000.jpg に変換
|
21
|
+
images-convert IMG_2000.HEIC ~/Downloads ~/Desktop
|
22
|
+
|
23
|
+
# 入力ディレクトリは ~/Downloads、出力ディレクトリは ~/Desktop が既定値です。
|
24
|
+
# また、画像ファイル名がIMG_で始まる場合は、以下のように省略できます。
|
25
|
+
images-convert 2000
|
26
|
+
|
27
|
+
# 短縮コマンド(エイリアス)を用いて、同じ操作を実行できます。
|
28
|
+
imgconv 2000
|
29
|
+
|
30
|
+
# 「最新N件をまとめて変換」ショートカット
|
31
|
+
images-convert -5 # 最新の5件を既定値で変換
|
32
|
+
images-convert -0 # すべての対象ファイルを既定値で変換
|
33
|
+
images-convert --all # すべての対象ファイルを既定値で変換
|
34
|
+
```
|
35
|
+
|
36
|
+
## 基本的な使い方
|
37
|
+
|
38
|
+
### HEICをJPGに変換する
|
39
|
+
入力ディレクトリは `~/Downloads`、出力ディレクトリは `~/Desktop` が既定値です。
|
40
|
+
また、画像ファイル名が `IMG_` で始まる場合は、`IMG_2000.HEIC` に代えて、`2000` と省略できます。
|
41
|
+
|
42
|
+
```bash
|
43
|
+
images-convert 2000
|
44
|
+
# または
|
45
|
+
imgconv 2000
|
46
|
+
```
|
47
|
+
|
48
|
+
### 最新N件/全件を変換する
|
49
|
+
既定の入出力ディレクトリ、変換形式、リサイズ幅を用いて、最新N件または全件を変換します。
|
50
|
+
判定基準の既定値は、`mtime`(ファイル更新日時)です。`exif`(EXIF 撮影日時)を基準に最新N件を選定する場合は、`--latest-exif` オプションを指定します。
|
51
|
+
|
52
|
+
```bash
|
53
|
+
images-convert -5 # 最新5件を既定値で変換
|
54
|
+
images-convert -5 --latest-exif # EXIF 撮影日時で最新5件を変換
|
55
|
+
images-convert -0 # すべての対象ファイルを既定値で変換
|
56
|
+
images-convert --all # --all でも同じ
|
57
|
+
```
|
58
|
+
|
59
|
+
### 最新件数の判定基準を切り替える
|
60
|
+
|
61
|
+
`-N` を利用した際の「最新順」の基準は、`mtime`(ファイル更新日時)が既定値ですが、 `exif`(EXIF 撮影日時)を既定値に設定することもできます。
|
62
|
+
|
63
|
+
```bash
|
64
|
+
images-convert set-latest-mode exif # 以後は EXIF を基準に最新N件を選定する
|
65
|
+
images-convert set-latest-mode mtime # ファイル更新日時を既定値に戻す
|
66
|
+
```
|
67
|
+
|
68
|
+
### 直接入出力ディレクトリやリサイズ幅を指定する
|
69
|
+
以下のように書くことで、任意の入出力ディレクトリや変換形式、リサイズ幅を指定できます。`~/Pictures/flower.jpg` は入力ファイル、`~/Desktop/flower.webp` は出力ファイル、`1024x` はリサイズ幅を表します。
|
70
|
+
|
71
|
+
```bash
|
72
|
+
images-convert ~/Pictures/flower.jpg ~/Desktop/flower.webp 1024x
|
73
|
+
```
|
74
|
+
|
75
|
+
ディレクトリ名を省略した場合には、既定値の入出力ディレクトリが用いられます。
|
76
|
+
横幅を1024xにリサイズして、flower.jpgをflower.webpに変換します。
|
77
|
+
|
78
|
+
```bash
|
79
|
+
images-convert flower.jpg flower.webp 1024x
|
80
|
+
```
|
81
|
+
|
82
|
+
高さをx1024にリサイズして、flower.jpgをflower.webpに変換します。
|
83
|
+
|
84
|
+
```bash
|
85
|
+
images-convert flower.jpg flower.webp x1024
|
86
|
+
```
|
87
|
+
|
88
|
+
横幅を50%にリサイズして、flower.jpgをflower.webpに変換します。
|
89
|
+
|
90
|
+
```bash
|
91
|
+
images-convert flower.jpg flower.webp 50%
|
92
|
+
```
|
93
|
+
|
94
|
+
### 変換形式やリサイズ幅、入出力ディレクトリを変更する
|
95
|
+
|
96
|
+
既定値を、ご自身が良く用いる変換形式やリサイズ幅に変更できます。
|
97
|
+
|
98
|
+
```bash
|
99
|
+
# 例: JPG→WebP、リサイズ幅1024x
|
100
|
+
images-convert set JPG WebP 1024x
|
101
|
+
# 例: JPG→WebP、リサイズ幅50% (拡張子は大文字小文字を区別しません。またjpg/jpegを同一視します。)
|
102
|
+
images-convert set jpeg webp 50%
|
103
|
+
```
|
104
|
+
|
105
|
+
以後はファイル名(または番号)だけで変換できます。
|
106
|
+
|
107
|
+
```bash
|
108
|
+
# 例: ~/Downloads/flower.jpg を ~/Desktop/flower.webp に変換
|
109
|
+
images-convert flower
|
110
|
+
# 例: ~/Downloads/IMG_2000.jpg を ~/Desktop/IMG_2000.webp に変換
|
111
|
+
images-convert 2000
|
112
|
+
```
|
113
|
+
|
114
|
+
入力/出力ディレクトリを設定することも可能です。
|
115
|
+
入力元 `~/Documentsフォルダ`、出力先 `~/Documents/converted`フォルダにする例です。
|
116
|
+
|
117
|
+
```bash
|
118
|
+
images-convert set-dir ~/Documents ~/Documents/converted
|
119
|
+
```
|
120
|
+
|
121
|
+
### waifu2x による高解像度化(AI アップスケール)
|
122
|
+
|
123
|
+
`--resize` などで指定したサイズが現在の画像より大きくなる場合、自動的に waifu2x (waifu2x-ncnn-vulkan) を利用した高解像度化に切り替わります。waifu2x 実行ファイルやモデルは、必要に応じて自動ダウンロードされます。
|
124
|
+
|
125
|
+
```bash
|
126
|
+
# 例: 元画像が幅500pxの場合は 4 倍に拡大
|
127
|
+
images-convert input.png --resize 2000x --output output.png
|
128
|
+
```
|
129
|
+
|
130
|
+
出力形式が `png`/`jpg`/`jpeg`/`webp` のいずれかであれば、自動アップスケールが適用されます。それ以外の形式やアップスケール不要な場合は、従来どおり MiniMagick による通常変換が行われます。
|
131
|
+
|
132
|
+
> **補足**: たとえば元画像が 300px なら waifu2x が 4 倍、700px なら 2 倍に拡大し、最後は MiniMagick が `--resize` で指定した 2000px へ仕上げます。常に最終出力は `--resize` の指示どおりになります。
|
133
|
+
|
134
|
+
#### waifu2x の既定値を設定する
|
135
|
+
|
136
|
+
```bash
|
137
|
+
# 例: 既定倍率4倍、ノイズ除去レベル3、モデル anime を設定
|
138
|
+
images-convert config set-waifu2x --scale 4 --noise 3 --model anime
|
139
|
+
|
140
|
+
# 例: A4向け自動スケールを無効化し、出力フォーマットを jpg に固定
|
141
|
+
images-convert config set-waifu2x --no-auto-scale-a4 --image_format jpg
|
142
|
+
```
|
143
|
+
|
144
|
+
利用可能な主なオプション(`config set-waifu2x`):
|
145
|
+
|
146
|
+
- `--scale NUM` … 既定の拡大率 (1〜4, 3は4と同等)
|
147
|
+
- `--noise NUM` … ノイズ除去レベル (0〜4)
|
148
|
+
- `--model NAME` … モデルエイリアス(例: `anime`, `photo`, `anime_style_art_rgb` など)
|
149
|
+
- `--[no-]auto-scale-a4` … A4 用紙に合わせた自動スケール調整を利用するか
|
150
|
+
- `--[no-]a4-print` … PDF 生成時に A4 レイアウトを適用するか
|
151
|
+
- `--image_format FORMAT` … waifu2x の出力画像フォーマット
|
152
|
+
- `--on_error ACTION` … エラー発生時の挙動 (`stop` または `skip`)
|
153
|
+
- `--quality NUM` … waifu2x 出力品質 (1〜100, 未指定時は既定値)
|
154
|
+
|
155
|
+
設定後は `images-convert config` で現在の waifu2x 既定値を確認できます。
|
156
|
+
|
157
|
+
#### PDF を生成する
|
158
|
+
|
159
|
+
複数ページの PDF を出力したい場合は、`--output-mode` に `pdf` または `both` を指定します。拡大・縮小のいずれの場合でも利用でき、`both` を指定すると画像出力と PDF を同時に取得できます。
|
160
|
+
|
161
|
+
```bash
|
162
|
+
# 例: ディレクトリ内の画像を拡大(または縮小)して PDF 化
|
163
|
+
images-convert convert /path/to/images --output-mode pdf --waifu2x-model anime --pdf-quality 90 --pdf-density 300
|
164
|
+
|
165
|
+
# 例: 拡大(または縮小)した画像と PDF を両方出力
|
166
|
+
images-convert convert /path/to/images --output-mode both --waifu2x-image-format webp
|
167
|
+
```
|
168
|
+
|
169
|
+
PDF 関連オプション:
|
170
|
+
|
171
|
+
- `--pdf-compression {jpeg|jpeg2000|zip}` … PDF に埋め込む画像の圧縮方式
|
172
|
+
- `--pdf-quality NUM` … 圧縮品質 (0〜100)
|
173
|
+
- `--pdf-density NUM` … ページ解像度 (DPI)
|
174
|
+
- `--waifu2x-a4-print/--no-waifu2x-a4-print` … A4 レイアウト (余白・中央寄せ) の有無
|
175
|
+
|
176
|
+
PDF 出力先は、指定がなければ入力ディレクトリに `ディレクトリ名.pdf` として作成されます。`--output` や `--output-dir` と組み合わせて保存先を調整できます。
|
177
|
+
|
178
|
+
### 最新件数の判定基準を切り替える
|
179
|
+
|
180
|
+
`--latest` を利用した際の「最新順」の基準を `mtime`(ファイル更新日時)と `exif`(EXIF 撮影日時)から選べます。
|
181
|
+
|
182
|
+
```bash
|
183
|
+
images-convert set-latest-mode exif # 以後は EXIF を基準に最新N件を選定
|
184
|
+
images-convert set-latest-mode mtime # 既定値(ファイル更新日時)に戻す
|
185
|
+
```
|
186
|
+
|
187
|
+
### ディレクトリからディレクトリへ一括変換する
|
188
|
+
入力ディレクトリ内にある画像ファイルを纏めて、出力ディレクトリに変換することができます。
|
189
|
+
|
190
|
+
例: `~/Pictures/HEIC` ディレクトリ内の `HEIC`ファイルを、`~/Desktop/converted` ディレクトリに `JPG(既定値)` + `リサイズ幅1920x(既定値)`で一括変換する
|
191
|
+
|
192
|
+
```bash
|
193
|
+
images-convert ~/Pictures/HEIC ~/Desktop/converted
|
194
|
+
```
|
195
|
+
|
196
|
+
事前に出力形式やサイズを変更しておけば、その設定が適用されます
|
197
|
+
|
198
|
+
```bash
|
199
|
+
images-convert set HEIC WebP 1024x
|
200
|
+
# 以降は、HEIC->WebP、1024xで一括変換されます。
|
201
|
+
images-convert convert ~/Pictures/HEIC ~/Desktop/converted
|
202
|
+
```
|
203
|
+
|
204
|
+
### 引数
|
205
|
+
|
206
|
+
`images-convert ファイル名または番号`
|
207
|
+
または
|
208
|
+
`images-convert 入力ディレクトリ 出力ディレクトリ`
|
209
|
+
- ファイル名または番号のみ指定すれば、設定された形式・サイズで変換します
|
210
|
+
- ディレクトリ指定時は、入力ディレクトリ内の対象拡張子を一括で変換し、出力ディレクトリに保存します
|
211
|
+
- 対応形式: HEIC, JPG, PNG, GIF, WebP, TIFF, BMP, ICO, PDFなど、ImageMagickでサポートする形式
|
212
|
+
- 形式名は大文字・小文字を区別しません(例: HEIC/heic/JPG/jpg いずれも可)
|
213
|
+
- jpeg 指定時は出力拡張子を jpg に統一します(入力は .jpg / .jpeg の両方を自動検出)
|
214
|
+
|
215
|
+
入力ディレクトリに変換後のファイルを書き出す場合には、出力ディレクトリの指定を省略できます。
|
216
|
+
`images-convert 入力ディレクトリ兼出力ディレクトリ`
|
217
|
+
|
218
|
+
### オプション
|
219
|
+
- `-h, --help`: ヘルプメッセージを表示
|
220
|
+
- `-v, --version`: バージョン情報を表示
|
221
|
+
|
222
|
+
- `-d, --delete`: 変換後に元のファイルを削除
|
223
|
+
- `-i, --input_dir`: 入力ディレクトリを指定
|
224
|
+
- `-o, --output_dir`: 出力ディレクトリを指定
|
225
|
+
- `-f, --overwrite`: 既存の出力ファイルがある場合に上書き(デフォルトはスキップ)
|
226
|
+
- `-s, --suffix VALUE`: 出力ファイル名にサフィックスを付与(例: `_resized`)
|
227
|
+
- `--recursive`: ディレクトリを再帰的に処理
|
228
|
+
- `--latest N`: 入力ディレクトリ内(既定は設定の input_dir)から更新日時の新しい順に N 件を変換
|
229
|
+
- `-N`: 入力ディレクトリ内(既定は設定の input_dir)から更新日時の新しい順に N 件を変換(ショートカット)
|
230
|
+
- `--all` または `-0`: 入力ディレクトリ内の対象ファイルをすべて変換
|
231
|
+
- `--quality NUM`: JPEG / WebP などの出力品質 (1〜100)。未指定時は設定ファイルの既定値を使用
|
232
|
+
|
233
|
+
ディレクトリ一括変換で `入力ディレクトリ` のみ指定した場合についての補足説明:
|
234
|
+
- JPG から WebP への変換など、異なる形式の変換を行う場合は、出力先は入力先と同じディレクトリになります。
|
235
|
+
(例: 同じディレクトリに flower.jpg -> flower.webp が生成されます。)
|
236
|
+
- JPG から JPG への変換など、同一形式の変換を行う場合(リサイズのみを行う場合)は、出力先は入力先と同じディレクトリですが、安全の為、デフォルトでは上書きしません。`--overwrite` を明示することにより、上書きを許可できます。(flower.jpg -> flower.jpg)。または `--suffix _resized` を使用して、flower.jpg -> flower_resized.jpg のように出力ファイル名を変更できます。
|
237
|
+
|
238
|
+
### 既定値(デフォルト設定)
|
239
|
+
|
240
|
+
初回実行時に自動作成される設定ファイル(`~/.images-convert/config.yml`)の既定値は以下の通りです。
|
241
|
+
|
242
|
+
- 入力形式(from): HEIC
|
243
|
+
- 出力形式(to): JPG
|
244
|
+
- リサイズ(resize): 1920x
|
245
|
+
- 入力ディレクトリ: `~/Downloads`
|
246
|
+
- 出力ディレクトリ: `~/Desktop`
|
247
|
+
|
248
|
+
### 設定のカスタマイズ
|
249
|
+
|
250
|
+
**使いやすいように、自分好みの設定にカスタマイズしましょう!**
|
251
|
+
|
252
|
+
```bash
|
253
|
+
# 現在の設定を表示(初回実行時は自動で設定ファイルが作成されます)
|
254
|
+
images-convert config
|
255
|
+
|
256
|
+
# デフォルト値を変更(例: JPG→WebP、サイズ1024x)
|
257
|
+
images-convert config set JPG WebP 1024x
|
258
|
+
|
259
|
+
# 設定変更後は省略して使用可能
|
260
|
+
images-convert 2000 # JPG→WebP、1024xで変換、Documentsフォルダから出力
|
261
|
+
|
262
|
+
# 最新N件を指定のディレクトリで
|
263
|
+
images-convert -3 --input_dir ~/Pictures --output_dir ~/Desktop
|
264
|
+
# または次のように省略できます
|
265
|
+
images-convert -3 ~/Pictures ~/Desktop
|
266
|
+
|
267
|
+
# コマンドラインオプションで一時的に指定することもできます。
|
268
|
+
# 例: 入力ディレクトリを ~/Pictures、出力ディレクトリを ~/Desktop に指定する例
|
269
|
+
images-convert flower ~/Pictures ~/Desktop
|
270
|
+
images-convert 2000 ~/Pictures ~/Desktop
|
271
|
+
```
|
272
|
+
|
273
|
+
**設定ファイルは自動で作成されます** `~/.images-convert/config.yml` に保存されます。
|
274
|
+
既定値へ戻したい場合は `imgconv config reset` を実行してください(確認を省略する場合は `--force` を付与)。
|
275
|
+
|
276
|
+
### アンインストール時のクリーンアップ
|
277
|
+
|
278
|
+
gemをアンインストールする際は、設定ファイルも自動で削除されます:
|
279
|
+
|
280
|
+
```bash
|
281
|
+
images-convert cleanup
|
282
|
+
```
|
283
|
+
|
284
|
+
これで `~/.images-convert/` ディレクトリ全体が削除されます。
|
285
|
+
|
286
|
+
### 設定ファイルの例(既定値)
|
287
|
+
|
288
|
+
Gemインストール直後に作成される設定ファイルは次のようになっています。
|
289
|
+
|
290
|
+
```yaml
|
291
|
+
# ~/.images-convert/config.yml
|
292
|
+
defaults:
|
293
|
+
from: HEIC # 入力形式
|
294
|
+
to: JPG # 出力形式
|
295
|
+
resize: 1920x # リサイズ値
|
296
|
+
directories:
|
297
|
+
input: ~/Downloads # 入力ディレクトリ
|
298
|
+
output: ~/Desktop # 出力ディレクトリ
|
299
|
+
selection:
|
300
|
+
latest_mode: mtime # 最新件数判定基準 (mtime/exif)
|
301
|
+
waifu2x:
|
302
|
+
scale: 2 # 拡大率 (1-4)
|
303
|
+
noise: 1 # ノイズ除去レベル (0-4)
|
304
|
+
model: photo # モデルエイリアス
|
305
|
+
auto_scale_a4: true # A4基準の自動スケール調整
|
306
|
+
a4_print: true # A4レイアウトPDF調整(デフォルトで有効)
|
307
|
+
image_format: webp # waifu2x出力フォーマット
|
308
|
+
on_error: stop # エラー時の挙動 (stop/skip)
|
309
|
+
output:
|
310
|
+
image_quality: 90 # 出力画像品質 (1-100)
|
311
|
+
pdf_quality: 90 # PDF埋め込み画像の品質 (1-100)
|
312
|
+
pdf_compression: jpeg # PDF埋め込み画像の圧縮方式 (jpeg/jpeg2000/zip)
|
313
|
+
pdf_density: 300 # PDF埋め込み画像のDPI
|
314
|
+
```
|
315
|
+
|
316
|
+
### 対話式セットアップを利用する
|
317
|
+
|
318
|
+
`imgconv setup` コマンドを実行すると、既定値を対話形式で更新できるウィザードが起動します。
|
319
|
+
|
320
|
+
```bash
|
321
|
+
bin/imgconv setup
|
322
|
+
```
|
323
|
+
|
324
|
+
- **現在値を保持したい場合は Enter** キーを押すだけで OK です。
|
325
|
+
- `y`/`n` の質問では、「現在値」と「既定値」が併記されるため、いま有効になっている設定を確認しながら変更できます。
|
326
|
+
- 形式名やモデル名など、候補が決まっている項目は、入力ミスがあれば再入力を求めます(例: 最新判定モードは `mtime` または `exif` のみ受け付け)。
|
327
|
+
- ウィザード終了時には、変更された項目が `旧値 => 新値` の形式で表示され、新しい値は端末上で緑色でハイライトされます。
|
328
|
+
- そのまま `imgconv config` が呼び出され、**最新の設定一式が即座に表示** されます。
|
329
|
+
|
330
|
+
### ヘルプを表示する
|
331
|
+
|
332
|
+
```bash
|
333
|
+
images-convert --help
|
334
|
+
# または
|
335
|
+
imgconv --help
|
336
|
+
```
|
337
|
+
|
338
|
+
### バージョン情報を表示する
|
339
|
+
|
340
|
+
```bash
|
341
|
+
images-convert --version
|
342
|
+
# または
|
343
|
+
imgconv --version
|
344
|
+
```
|
345
|
+
|
346
|
+
## 要件
|
347
|
+
|
348
|
+
- Ruby 3.3+
|
349
|
+
- `images-convert` は Ruby 製の CLI ツールです。Ruby 3.3 以上がインストールされた環境でご利用ください。
|
350
|
+
- ImageMagick(未導入の場合は初回実行時に自動導入を案内します)
|
351
|
+
- 変換処理には ImageMagick を利用します。インストールされていない場合、初回実行時に対話形式で導入を案内します。
|
352
|
+
- waifu2x-ncnn-vulkan(AI アップスケール機能を使用する場合)
|
353
|
+
- waifu2x バイナリを環境に用意するか、または `config set-waifu2x` でパス/自動ダウンロードURLを指定してください。
|
354
|
+
|
355
|
+
## 開発
|
356
|
+
|
357
|
+
貢献するには:
|
358
|
+
1. リポジトリを取得し、ローカル環境にクローンします。
|
359
|
+
2. プロジェクトディレクトリへ移動し、依存関係をインストールしてください。
|
360
|
+
|
361
|
+
```bash
|
362
|
+
git clone https://github.com/Atelier-Mirai/images-convert.git
|
363
|
+
cd images-convert
|
364
|
+
bundle install
|
365
|
+
```
|
366
|
+
|
367
|
+
## ライセンス
|
368
|
+
|
369
|
+
MIT License です。詳しくは [LICENSE](./LICENSE) ファイルをご確認ください。
|
370
|
+
|
371
|
+
### テストで使用している画像の出典
|
372
|
+
|
373
|
+
- 桜と小鳥、メジロの夫婦: https://www.photo-ac.com/main/detail/28776655
|
374
|
+
- 青空とひまわり: https://www.photo-ac.com/main/detail/33232207
|
375
|
+
- 秋の満月: https://www.photo-ac.com/main/detail/27810146
|
376
|
+
- 雪だるま: https://www.photo-ac.com/main/detail/4880573
|
377
|
+
|
378
|
+
これらの写真をご提供くださった photoAC の作者の皆さまに深く感謝いたします。
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# images-convert 0.2.12
|
2
|
+
|
3
|
+
リリース日: 2025-09-25
|
4
|
+
|
5
|
+
## ハイライト
|
6
|
+
- EXIF 撮影日時を基準にした「最新 N 件」選定に対応(`--latest-exif`)。
|
7
|
+
- 既定の最新選定基準を設定できる `set-latest-mode` コマンドを追加(`mtime`/`exif`)。
|
8
|
+
- 設定ファイルに `selection.latest_mode` を追加し、設定の表示/保存/読み込みに対応。
|
9
|
+
|
10
|
+
## 変更点詳細
|
11
|
+
- 機能追加
|
12
|
+
- `--latest-exif` フラグを追加(`--latest N` と併用)。
|
13
|
+
- EXIF の `DateTimeOriginal` / `CreateDate` / `DateTimeDigitized` / `DateTime` の順で解析し、並び替えに使用。
|
14
|
+
- EXIF が無い、または解析失敗時はファイル更新日時(mtime)へフォールバックし、実行時にその旨を通知。
|
15
|
+
- `images-convert config set-latest-mode MODE` を追加(`MODE`: `mtime` または `exif`)。
|
16
|
+
- 現在設定は `images-convert config` で確認可能。
|
17
|
+
- 設定ファイル
|
18
|
+
- `~/.images-convert/config.yml` に `selection.latest_mode` を追加。例:
|
19
|
+
```yaml
|
20
|
+
selection:
|
21
|
+
latest_mode: mtime
|
22
|
+
```
|
23
|
+
- CLI オプション/ヘルプ
|
24
|
+
- `convert` コマンドに `--latest-exif` を追加。
|
25
|
+
- 最新 N 件/全件の選定メッセージに基準(`mtime`/`exif`)を表示。
|
26
|
+
- ドキュメント
|
27
|
+
- `README.md` に `--latest-exif` と `set-latest-mode` の使い方を追記。
|
28
|
+
- テスト
|
29
|
+
- `CLILatestSelectionTest`: EXIF 順ソートと mtime フォールバックのテストを追加。
|
30
|
+
- `CLIConfigTest`: `set-latest-mode` の正常系/異常系テストを追加。
|
31
|
+
|
32
|
+
## 破壊的変更
|
33
|
+
- 廃止: `--dry-run` オプションを削除しました。テスト用途は MiniMagick スタブにより実変換検証で代替します。
|
34
|
+
- 変更: 短縮コマンド名を `imgcvt` から `imgconv` に統一しました(エイリアス移行)。
|
35
|
+
|
36
|
+
## アップグレード手順
|
37
|
+
1. gem を更新:
|
38
|
+
```bash
|
39
|
+
gem install images-convert
|
40
|
+
# もしくは
|
41
|
+
bundle update images-convert
|
42
|
+
```
|
43
|
+
2. 既定の最新判定基準を EXIF にしたい場合:
|
44
|
+
```bash
|
45
|
+
images-convert config set-latest-mode exif
|
46
|
+
```
|
47
|
+
3. 破壊的変更への対応(必要な場合):
|
48
|
+
- `--dry-run` を使っていた箇所を削除
|
49
|
+
- `imgcvt` を使用しているスクリプトは `imgconv` に置換
|
50
|
+
|
51
|
+
## 利用例
|
52
|
+
- EXIF を基準に最新 5 件を変換:
|
53
|
+
```bash
|
54
|
+
images-convert --latest 5 --latest-exif
|
55
|
+
```
|
56
|
+
- 既定の基準を EXIF に設定(以降は `--latest N` のみで EXIF 基準を使用):
|
57
|
+
```bash
|
58
|
+
images-convert config set-latest-mode exif
|
59
|
+
```
|
60
|
+
- 全件変換(従来どおり):
|
61
|
+
```bash
|
62
|
+
images-convert --all
|
63
|
+
```
|
64
|
+
|
65
|
+
## 参考
|
66
|
+
- 変更の全体像は `CHANGELOG.md` の「未リリース」セクションを参照してください。
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# images-convert 0.2.3
|
2
|
+
|
3
|
+
以下は CHANGELOG.md の 0.2.3 抜粋です。
|
4
|
+
|
5
|
+
## 0.2.3 - 2025-09-23
|
6
|
+
- 機能追加: 「最新の画像 N 件」または「全件」を既定値に従って一括変換できるオプションを追加
|
7
|
+
- `-N`(例: `-1`, `-5`)… 最新の N 件を変換(`convert --latest N` のショートカット)
|
8
|
+
- `-0` / `--all` … すべての対象ファイルを変換
|
9
|
+
- サブコマンド省略時でも `images-convert -5` のように実行可能(内部的に `convert` を補完)
|
10
|
+
- 入力/出力ディレクトリや from/to/resize は設定ファイルの既定値(`images-convert config`)を使用
|
11
|
+
|
12
|
+
### 使用例
|
13
|
+
```bash
|
14
|
+
images-convert -1 # 最新1件
|
15
|
+
images-convert -5 --delete # 最新5件、変換後に元ファイル削除
|
16
|
+
images-convert -0 --overwrite # 全件、上書き許可
|
17
|
+
images-convert convert --latest 3 # ロングオプション
|
18
|
+
images-convert convert --all
|
19
|
+
```
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# images-convert 0.3.0
|
2
|
+
|
3
|
+
リリース日: 2025-09-25
|
4
|
+
|
5
|
+
## ハイライト
|
6
|
+
- EXIF 撮影日時を基準にした「最新 N 件」選定に対応(`--latest-exif`)。
|
7
|
+
- 既定の最新選定基準を設定できる `set-latest-mode` コマンドを追加(`mtime`/`exif`)。
|
8
|
+
- 設定ファイルに `selection.latest_mode` を追加し、設定の表示/保存/読み込みに対応。
|
9
|
+
|
10
|
+
## 変更点詳細
|
11
|
+
- 機能追加
|
12
|
+
- `--latest-exif` フラグを追加(`--latest N` と併用)。
|
13
|
+
- EXIF の `DateTimeOriginal` / `CreateDate` / `DateTimeDigitized` / `DateTime` の順で解析し、並び替えに使用。
|
14
|
+
- EXIF が無い、または解析失敗時はファイル更新日時(mtime)へフォールバックし、実行時にその旨を通知。
|
15
|
+
- `images-convert config set-latest-mode MODE` を追加(`MODE`: `mtime` または `exif`)。
|
16
|
+
- 現在設定は `images-convert config` で確認可能。
|
17
|
+
- 設定ファイル
|
18
|
+
- `~/.images-convert/config.yml` に `selection.latest_mode` を追加。例:
|
19
|
+
```yaml
|
20
|
+
selection:
|
21
|
+
latest_mode: mtime
|
22
|
+
```
|
23
|
+
- CLI オプション/ヘルプ
|
24
|
+
- `convert` コマンドに `--latest-exif` を追加。
|
25
|
+
- 最新 N 件/全件の選定メッセージに基準(`mtime`/`exif`)を表示。
|
26
|
+
- ドキュメント
|
27
|
+
- `README.md` に `--latest-exif` と `set-latest-mode` の使い方を追記。
|
28
|
+
- テスト
|
29
|
+
- `CLILatestSelectionTest`: EXIF 順ソートと mtime フォールバックのテストを追加。
|
30
|
+
- `CLIConfigTest`: `set-latest-mode` の正常系/異常系テストを追加。
|
31
|
+
|
32
|
+
## 破壊的変更
|
33
|
+
- 廃止: `--dry-run` オプションを削除しました。テスト用途は MiniMagick スタブにより実変換検証で代替します。
|
34
|
+
- 変更: 短縮コマンド名を `imgcvt` から `imgconv` に統一しました(エイリアス移行)。
|
35
|
+
|
36
|
+
## アップグレード手順
|
37
|
+
1. gem を更新:
|
38
|
+
```bash
|
39
|
+
gem install images-convert
|
40
|
+
# もしくは
|
41
|
+
bundle update images-convert
|
42
|
+
```
|
43
|
+
2. 既定の最新判定基準を EXIF にしたい場合:
|
44
|
+
```bash
|
45
|
+
images-convert config set-latest-mode exif
|
46
|
+
```
|
47
|
+
3. 破壊的変更への対応(必要な場合):
|
48
|
+
- `--dry-run` を使っていた箇所を削除
|
49
|
+
- `imgcvt` を使用しているスクリプトは `imgconv` に置換
|
50
|
+
|
51
|
+
## 利用例
|
52
|
+
- EXIF を基準に最新 5 件を変換:
|
53
|
+
```bash
|
54
|
+
images-convert --latest 5 --latest-exif
|
55
|
+
```
|
56
|
+
- 既定の基準を EXIF に設定(以降は `--latest N` のみで EXIF 基準を使用):
|
57
|
+
```bash
|
58
|
+
images-convert config set-latest-mode exif
|
59
|
+
```
|
60
|
+
- 全件変換(従来どおり):
|
61
|
+
```bash
|
62
|
+
images-convert --all
|
63
|
+
```
|
64
|
+
|
65
|
+
## 参考
|
66
|
+
- 変更の全体像は `CHANGELOG.md` の「0.3.0」セクションを参照してください。
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# リリースノート v0.4.0 (2025-09-26)
|
2
|
+
|
3
|
+
## ハイライト
|
4
|
+
- `imgconv setup` の**対話式セットアップウィザード**を新設しました。質問形式で現在値と既定値を確認しながら設定でき、入力内容を検証して誤りを防ぎます。完了時には変更点を色付きで比較表示し、そのまま `imgconv config` を実行して最新設定を即確認できます。
|
5
|
+
- **waifu2x 連携**を追加しました。リサイズ指定が元画像を上回る場合、自動的に waifu2x (waifu2x-ncnn-vulkan) に委譲して高解像度化します。`config set-waifu2x` で倍率・ノイズ除去・モデル・エラー時動作などを細かく調整でき、バイナリ/モデルパスや PDF 出力モードの上書きにも対応します。
|
6
|
+
|
7
|
+
## 改善
|
8
|
+
- `lib/images_convert/mini_magick_stub.rb` を拡張し、寸法取得や `Image.ping` のスタブを実装しました。ImageMagick が無い環境でもテストを強化できます。
|
9
|
+
|
10
|
+
## テストと品質
|
11
|
+
- `lib/images_convert/waifu2x_test_stub.rb` と `test/test_waifu2x.rb` を追加し、waifu2x パイプライン全体をテスト可能にしました。本番コードとスタブの両方で安定した動作を担保します。
|
12
|
+
|
13
|
+
## アップグレード手順
|
14
|
+
- アップグレード後は `bin/imgconv setup` を実行し、ウィザードで既定値を見直してください。終了時に自動で表示される `imgconv config` で設定内容を確認できます。
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# リリースノート v0.4.1 (2025-09-26)
|
2
|
+
|
3
|
+
## ハイライト
|
4
|
+
- `imgconv config reset` サブコマンドを追加しました。確認プロンプト付きで設定を既定値に戻せるようになり、`--force` オプションで確認をスキップできます。
|
5
|
+
|
6
|
+
## 変更点
|
7
|
+
- CLI `config` コマンドに `reset` サブコマンドを実装し、復元後は `show_all_settings` の結果を即座に表示して現在の構成を把握しやすくしました。
|
8
|
+
- `ImagesConvert::Configuration.reset_to_defaults` を新設し、設定ファイルの再生成・キャッシュクリアを一括で行えるようにしました。
|
9
|
+
- `README.md` と `CHANGELOG.md` にリセット手順とリリース情報を追記しました。
|
10
|
+
- `test/test_config.rb` に `config reset` の回帰テストを追加し、既存の設定関連テスト一式がグリーンになることを確認しました。
|
11
|
+
|
12
|
+
## テスト
|
13
|
+
- `bundle exec rake test`
|
data/Rakefile
ADDED
data/bin/images-convert
ADDED
data/bin/imgconv
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
# バージョンは単一情報源として lib/images_convert/version.rb から取得
|
5
|
+
version_file = File.expand_path('lib/images_convert/version.rb', __dir__)
|
6
|
+
version_source = File.read(version_file)
|
7
|
+
version = version_source[/VERSION\s*=\s*"([^"]+)"/, 1] || version_source[/VERSION\s*=\s*'([^']+)'/, 1]
|
8
|
+
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
s.name = "images-convert"
|
11
|
+
s.version = version
|
12
|
+
s.authors = ["Atelier Mirai"]
|
13
|
+
s.email = ["contact@atelier-mirai.net"]
|
14
|
+
s.homepage = "https://github.com/Atelier-Mirai/images-convert"
|
15
|
+
s.summary = "A CLI tool for converting image formats using ImageMagick and waifu2x"
|
16
|
+
s.description = "A powerful CLI tool for converting image formats using ImageMagick, with optional waifu2x upscaling when enlarging images. Supports single file conversion, bulk directory conversion, and persistent configuration settings. Convert between various formats (HEIC, JPG, PNG, WebP, etc.)."
|
17
|
+
s.license = "MIT"
|
18
|
+
|
19
|
+
s.metadata = {
|
20
|
+
"homepage_uri" => "https://github.com/Atelier-Mirai/images-convert#readme",
|
21
|
+
"source_code_uri" => "https://github.com/Atelier-Mirai/images-convert",
|
22
|
+
"changelog_uri" => "https://github.com/Atelier-Mirai/images-convert/blob/master/CHANGELOG.md",
|
23
|
+
"documentation_uri" => "https://github.com/Atelier-Mirai/images-convert#readme"
|
24
|
+
}
|
25
|
+
|
26
|
+
s.files = `git ls-files`.split("\n")
|
27
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
28
|
+
# 公開する実行ファイルは新名称のみ(後方互換は無し)
|
29
|
+
s.executables = ['images-convert', 'imgconv']
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
|
32
|
+
s.add_dependency "thor", "~> 1.0"
|
33
|
+
s.add_dependency "mini_magick", "~> 4.12"
|
34
|
+
s.add_dependency "parallel", "~> 1.22"
|
35
|
+
s.add_dependency "rmagick"
|
36
|
+
s.add_dependency "combine_pdf", "~> 1.0"
|
37
|
+
|
38
|
+
s.required_ruby_version = ">= 3.3.0"
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module ImagesConvert
|
6
|
+
class Cleanup
|
7
|
+
CONFIG_DIR = File.expand_path('~/.images-convert')
|
8
|
+
|
9
|
+
def self.run
|
10
|
+
if Dir.exist?(CONFIG_DIR)
|
11
|
+
puts "設定ファイルとディレクトリを削除しますか? [Y/n]"
|
12
|
+
print "> "
|
13
|
+
answer = (STDIN.gets || "").strip
|
14
|
+
answer = 'y' if answer.empty?
|
15
|
+
|
16
|
+
if answer.downcase.start_with?('y')
|
17
|
+
begin
|
18
|
+
FileUtils.rm_rf(CONFIG_DIR)
|
19
|
+
puts "設定ファイルとディレクトリを削除しました: #{CONFIG_DIR}"
|
20
|
+
rescue => e
|
21
|
+
puts "削除中にエラーが発生しました: #{e.message}"
|
22
|
+
end
|
23
|
+
else
|
24
|
+
puts "削除をキャンセルしました。設定ファイルは残ります。"
|
25
|
+
end
|
26
|
+
else
|
27
|
+
puts "設定ディレクトリが見つかりません: #{CONFIG_DIR}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|